ASP.NET中GridView控件开发问题:无法触发GridView1_RowCommand(object sender, GridViewCommandEventArgs e)方法

问题描述

问题描述:我在一个aspx页面中添加了一个GridView控件,为其添加自定义的“编辑”“删除”按钮(ImageButton类型)。(1)页面头标记为:<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="listMap.aspx.cs"Inherits="listMap"EnableEventValidation="false"%>(2)GridView控件标记:<asp:GridViewID="GridView1"runat="server"SkinID="gridviewSkin"Width="100%"AutoGenerateColumns="False"OnRowCancelingEdit="GridView1_RowCancelingEdit"OnRowEditing="GridView1_RowEditing"OnRowUpdating="GridView1_RowUpdating"OnRowCommand="GridView1_RowCommand"OnRowDataBound="GridView1_RowDataBound"><Columns><asp:TemplateFieldHeaderImageUrl="~/images/delete.gif"><ItemTemplate><asp:ImageButtonImageUrl="~/images/delete.gif"AlternateText="删除"runat="server"ID="lbDelete"CommandName="MyDelete"CommandArgument=<%#DataBinder.Eval(Container,"DataItem.ID")%>/></ItemTemplate></asp:TemplateField><asp:TemplateFieldHeaderImageUrl="~/images/edit.gif"><ItemTemplate><asp:ImageButtonImageUrl="~/images/edit.gif"AlternateText="编辑"runat="server"ID="lbEdit1"CommandName="MyEdit"CommandArgument=<%#DataBinder.Eval(Container,"DataItem.ID")%>/></ItemTemplate><EditItemTemplate><asp:ImageButtonImageUrl="~/images/cancel.jpg"CausesValidation="false"AlternateText="取消"runat="server"ID="lbCancel1"CommandName="Cancel"/><asp:ImageButtonImageUrl="~/images/fwd.gif"AlternateText="更新"runat="server"ID="lbUpdate1"CommandName="Update"/></EditItemTemplate></asp:TemplateField><asp:TemplateFieldHeaderImageUrl="~/images/map.gif"><ItemTemplate><asp:ImageButtonImageUrl="~/images/map.gif"AlternateText="查看地图"runat="server"ID="lbView"CommandName="MapView"CommandArgument=<%#DataBinder.Eval(Container,"DataItem.ID")%>/></ItemTemplate></asp:TemplateField> <asp:BoundFieldDataField="ID"HeaderText="ID"ReadOnly="True"/><asp:BoundFieldDataField="地图名称"HeaderText="地图名称"ReadOnly="True"/><asp:BoundFieldDataField="数据格式"HeaderText="数据格式"ReadOnly="True"/><asp:TemplateFieldHeaderText="比例尺等级"><EditItemTemplate><asp:TextBoxID="txtAvgVal11"runat="server"Width="50px"Text='<%#Bind("比例尺等级")%>'></asp:TextBox><asp:RequiredFieldValidatorID="RequiredFieldValidator11"runat="server"ControlToValidate="txtAvgVal11"ErrorMessage="*"></asp:RequiredFieldValidator></EditItemTemplate><ItemTemplate><asp:LabelID="Label11"runat="server"Text='<%#Bind("比例尺等级")%>'></asp:Label></ItemTemplate></asp:TemplateField><asp:BoundFieldDataField="备注"HeaderText="备注"ReadOnly="True"/></Columns></asp:GridView>(3)对应的.cs文件中的代码如下:protectedvoidGridView1_RowCommand(objectsender,GridViewCommandEventArgse){if(e.CommandName=="MyDelete"){//删除操作,更新表格,略}}问题描述:基于以下开发设置,调试,点击“删除”按钮,程序却没有运行进入以上的GridView1_RowCommand中的代码if(e.CommandName=="MyDelete")中:请问,为什么没有处罚这个函数GridView1_RowCommand?????????????

解决方案

解决方案二:
delete的CommandName就用Delete好了,不要用MyDelete
解决方案三:
我更改了*.aspx,*.cs中的MyDelete为Delete可是还是无法触发GridView1_RowCommand?????????????
解决方案四:
直接在GirdView里面双击删除添加删除事件事件空的也没关系这样应该就好了
解决方案五:
你可以EnableEventValidation设置为true,然后将你的所有关于GRIDVIEW的数据绑定操作都放倒Page.IsPostBack=true的条件下。
解决方案六:
引用4楼havenlau的回复:

你可以EnableEventValidation设置为true,然后将你的所有关于GRIDVIEW的数据绑定操作都放倒Page.IsPostBack=true的条件下。

支持我也是这么弄的。
解决方案七:
xuexi
解决方案八:
RowDeleting事件里可用
解决方案九:
先看基础概念:然后看看GridView是怎么写的:protectedoverrideboolOnBubbleEvent(objectsource,EventArgse){boolcausesValidation=false;stringvalidationGroup=string.Empty;GridViewCommandEventArgsargs=easGridViewCommandEventArgs;if(args!=null){IButtonControlcommandSource=args.CommandSourceasIButtonControl;if(commandSource!=null){causesValidation=commandSource.CausesValidation;validationGroup=commandSource.ValidationGroup;}}returnthis.HandleEvent(e,causesValidation,validationGroup);}privateboolHandleEvent(EventArgse,boolcausesValidation,stringvalidationGroup){boolflag=false;this._modelValidationGroup=null;if(causesValidation){this.Page.Validate(validationGroup);if(this.EnableModelValidation){this._modelValidationGroup=validationGroup;}}GridViewCommandEventArgsargs=easGridViewCommandEventArgs;if(args!=null){this.OnRowCommand(args);flag=true;stringcommandName=args.CommandName;if(StringUtil.EqualsIgnoreCase(commandName,"Select")){this.HandleSelect(this.GetRowIndex(args.Row,(string)args.CommandArgument));returnflag;}if(StringUtil.EqualsIgnoreCase(commandName,"Page")){stringcommandArgument=(string)args.CommandArgument;intpageIndex=this.PageIndex;if(StringUtil.EqualsIgnoreCase(commandArgument,"Next")){pageIndex++;}elseif(StringUtil.EqualsIgnoreCase(commandArgument,"Prev")){pageIndex--;}elseif(StringUtil.EqualsIgnoreCase(commandArgument,"First")){pageIndex=0;}elseif(StringUtil.EqualsIgnoreCase(commandArgument,"Last")){pageIndex=this.PageCount-1;}else{pageIndex=Convert.ToInt32(commandArgument,CultureInfo.InvariantCulture)-1;}this.HandlePage(pageIndex);returnflag;}if(StringUtil.EqualsIgnoreCase(commandName,"Sort")){this.HandleSort((string)args.CommandArgument);returnflag;}if(StringUtil.EqualsIgnoreCase(commandName,"Edit")){this.HandleEdit(this.GetRowIndex(args.Row,(string)args.CommandArgument));returnflag;}if(StringUtil.EqualsIgnoreCase(commandName,"Update")){this.HandleUpdate(args.Row,this.GetRowIndex(args.Row,(string)args.CommandArgument),causesValidation);returnflag;}if(StringUtil.EqualsIgnoreCase(commandName,"Cancel")){this.HandleCancel(this.GetRowIndex(args.Row,(string)args.CommandArgument));returnflag;}if(StringUtil.EqualsIgnoreCase(commandName,"Delete")){this.HandleDelete(args.Row,this.GetRowIndex(args.Row,(string)args.CommandArgument));}}returnflag;}

也就是说,你的事件第二个参数EventArgs必须是GridViewCommandEventArgs或者IButtonControl。

时间: 2024-10-21 11:26:37

ASP.NET中GridView控件开发问题:无法触发GridView1_RowCommand(object sender, GridViewCommandEventArgs e)方法的相关文章

灵活掌握asp.net中gridview控件的多种使用方法(下)_实用技巧

继续上篇文章的学习<灵活掌握asp.net中gridview控件的多种使用方法(上)>,在此基础上巩固gridview控件的操作使用,更上一层楼. 11.GridView实现用"..."代替超长字符串:效果图:   解决方法:数据绑定后过滤每一行即可 for (int i = 0; i <= GridView1.Rows.Count - 1; i++) { DataRowView mydrv; string gIntro; if (GridView1.PageInde

灵活掌握asp.net中gridview控件的多种使用方法(上)_实用技巧

灵活使用asp.net中gridview控件的方法有很多种,本文内容很富,希望大家都能有所收获. 1.GridView无代码分页排序: 效果图: 小提示: 1.AllowSorting设为True,aspx代码中是AllowSorting="True": 2.默认1页10条,如果要修改每页条数,修改PageSize即可,在aspx代码中是PageSize="12". 3.默认的是单向排序的,右击GridView弹出"属性",选择AllowSort

asp.net中gridview控件中,怎么用c#语言的代码方式实现编辑、删除数据功能

问题描述 asp.net中gridview控件中,怎么用c#语言的代码方式实现编辑.删除数据功能 解决方案 解决方案二:给你一份编辑和删除的底层代码吧,你自己看着对应自己的进行修改编辑:usingSystem;usingSystem.Data;usingSystem.Configuration;usingSystem.Collections;usingSystem.Web;usingSystem.Web.Security;usingSystem.Web.UI;usingSystem.Web.UI

asp.net中GridView控件遍历的小例子_实用技巧

复制代码 代码如下: int intCount = this.GridView1.Rows.Count; //总行数for (int i = 0; i < intCount; i++){  Label1.Text = ((HyperLink)GridView1.Rows[i].Cells[0].Controls[0]).Text.ToString().Trim(); } for (i = 0; i < GridViewID.Rows.Count; i++){   CheckBox chkVot

asp.net中GridView控件遍历程序

 代码如下 复制代码 int intCount = this.GridView1.Rows.Count; //总行数 for (int i = 0; i < intCount; i++) {   Label1.Text = ((HyperLink)GridView1.Rows[i].Cells[0].Controls[0]).Text.ToString().Trim();           } for (i = 0; i < GridViewID.Rows.Count; i++) {   

ASP.NET 2.0中GridView控件的隐藏列的问题

Asp.net 2.0 GridView隐藏列visible="false" 后你就无法取得这列的值了, 而用datagrid就没有这个问题, MS这个混蛋老是改变游戏规则, 幸好我聪明, 在百度上搜到了别人的解决方法, 然后加入了自己的方法, 才解决问题: protected void GVList_RowDataBound(object sender, GridViewRowEventArgs e) { //隐藏不必要的列 if ((e.Row.RowType == DataCon

asp.net中根据本机的屏幕分辨率来控制页面中gridview控件的PageSize的值

问题描述 asp.net中根据本机的屏幕分辨率来控制页面中gridview控件的PageSize的值 asp.net中根据本机的屏幕分辨率来控制页面中gridview控件中的PageSize的值,分辨率不同,PageSize的值不同 解决方案 http://zhidao.baidu.com/link?url=7_maszHk6yvjio7PD-aZQPwdpmMY6dN76qgTiEWp8cgGd4G9g_rgiqrdrxiaaKmdSQIG0C7SFx47uKVG5sN9Wa

asp.net中Repeater控件用法笔记

  大家可能都对datagrid比较熟悉,但是如果在数据量大的时候,我们就得考虑使用repeater作为我们的数据绑定控件了.Repeater控件与DataGrid (以及DataList)控件的主要区别是在于如何处理HTML.ASP.NET建立HTML代码以显示DataGrid控件,但Repeater允许开发人员决定如何显示数据.所以,你可以选择将数据显示在一个HTML表格中或者一个顺序列表中.这主要取决于你的选择,但你必须将正确的HTML插入到 ASP.NET页面中. 模板与DataList

轻松学习Asp.net中的控件

       C/S 结构,即大家熟知的客户机和服务器结构.它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销.目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件:因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出