ASP.NET GridView自动更新操作的常见错误
2012-02-28 15:37
435 查看
GridView的RowDeleting、RowUpdating和RowCommand事件
默认分类 | 标签: |字号大中小 订阅
1. RowCommand:行命令事件
何时触发:任何在GridView中设定了CommandName的控件都可以触发该事件。
代码案例:
<asp:LinkButton runat="server" ID="lbtnDelete" Text="删除"
CommandArgument='<%# Eval("StudentNo") %>' CommandName="Del"/>
说明:
需要在GridView中执行某个命令时能够自定义行为,而不是有GridView自动来完成,可使用该事件。比如执行自定义的删除和修改功能。
该事件可同时处理一个GridView发出的不同的操作指令,如删除和修改,如何判断某一时刻做什么操作就成为了关键。我们可以通过CommandName来区分每个不同的指令。如
if(commandName=="Del"){
//执行删除操作....
}else if(commandName=="Update"){
//执行修改操作....
}
2. RowDeleting:行正在删除事件
何时触发:
1.如果GridView是通过设置 DataSourceID="odsStudent" 来指定数据源的,则在执行删除时总会调用该事件
2.只要引发事件的CommandName是“Delete”就会自动引发RowDeleting事件。
代码案例:
1.<asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />
2.<asp:LinkButton runat="server" ID="lbtnDelete" Text="删除" CommandName="Delete"/>
说明:
如果GridView的数据源是通过设置 DataSourceID="odsStudent" 来指定,则必须为ObjectDataSource指定DeleteMenthod方法,因为GridView此时某自动寻找DeleteMenthod属性指定的删除方法,如果没有指定的方法,则会报错,如下图所示:
当然此时也会触发RowCommand事件,我们可以在RowCommand事件中手动调用删除方法来执行删除功能,但必须在RowDeleting事件处理方法中写上 "e.Cancel = true;",取消该事件的默认行为。所以如果不需要使用ObjectDataSource的自动绑定删除功能,最好不要将控件的CommandName设为“Delete”。
如果GridView的DataSource是通过编码手动指定的,则执行删除时不需要写“e.Cancel = true;”,但RowDeleting事件依然会调用,但不会如寻找和依赖ObjectDataSource的DeleteMethod方法了。可以看出只要GridView指定了DataSourceId,在删除Gridview记录时就会自动找ObjectDataSource的相关的DeleteMethod。
3. RowUpdating:行正在修改事件
各项操作和注意事项和RowDeleting一样。
总结:
1. GridView中一定是先调用RowCommand事件再调用RowDeleting或RowUpdating事件
2. 不要在自定义的CommandName属性中使用“Delete、Update、Insert、Select”四个名称,这四个名称被GridView自动完成事件所占用。
GridView的RowDeleting、RowUpdating和RowCommand事件
2011-07-30 18:23:41| 分类:默认分类 | 标签: |字号大中小 订阅
1. RowCommand:行命令事件
何时触发:任何在GridView中设定了CommandName的控件都可以触发该事件。
代码案例:
<asp:LinkButton runat="server" ID="lbtnDelete" Text="删除"
CommandArgument='<%# Eval("StudentNo") %>' CommandName="Del"/>
说明:
需要在GridView中执行某个命令时能够自定义行为,而不是有GridView自动来完成,可使用该事件。比如执行自定义的删除和修改功能。
该事件可同时处理一个GridView发出的不同的操作指令,如删除和修改,如何判断某一时刻做什么操作就成为了关键。我们可以通过CommandName来区分每个不同的指令。如
if(commandName=="Del"){
//执行删除操作....
}else if(commandName=="Update"){
//执行修改操作....
}
2. RowDeleting:行正在删除事件
何时触发:
1.如果GridView是通过设置 DataSourceID="odsStudent" 来指定数据源的,则在执行删除时总会调用该事件
2.只要引发事件的CommandName是“Delete”就会自动引发RowDeleting事件。
代码案例:
1.<asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />
2.<asp:LinkButton runat="server" ID="lbtnDelete" Text="删除" CommandName="Delete"/>
说明:
如果GridView的数据源是通过设置 DataSourceID="odsStudent" 来指定,则必须为ObjectDataSource指定DeleteMenthod方法,因为GridView此时某自动寻找DeleteMenthod属性指定的删除方法,如果没有指定的方法,则会报错,如下图所示:
当然此时也会触发RowCommand事件,我们可以在RowCommand事件中手动调用删除方法来执行删除功能,但必须在RowDeleting事件处理方法中写上 "e.Cancel = true;",取消该事件的默认行为。所以如果不需要使用ObjectDataSource的自动绑定删除功能,最好不要将控件的CommandName设为“Delete”。
如果GridView的DataSource是通过编码手动指定的,则执行删除时不需要写“e.Cancel = true;”,但RowDeleting事件依然会调用,但不会如寻找和依赖ObjectDataSource的DeleteMethod方法了。可以看出只要GridView指定了DataSourceId,在删除Gridview记录时就会自动找ObjectDataSource的相关的DeleteMethod。
3. RowUpdating:行正在修改事件
各项操作和注意事项和RowDeleting一样。
总结:
1. GridView中一定是先调用RowCommand事件再调用RowDeleting或RowUpdating事件
2. 不要在自定义的CommandName属性中使用“Delete、Update、Insert、Select”四个名称,这四个名称被GridView自动完成事件所占用。
相关文章推荐
- asp.net操作过程中常见错误的解决方法
- asp.net TreeView安装、使用(如何将TreeView打包发布)(带CheckBox选择框的TreeView的初始化,TreeView客户端操作:选择父节点后自动选择所有子节点,子节点选择后自动选择父节点)(TreeView节点精确定位)2005-12-23更新
- ASP.NET 中 对GridView(网格视图)的查、分页、编辑更新、删除操作
- asp.net访问access 发生了未处理的异常 "操作必须使用一个可更新的查询"错误
- 在ASP.NET 2.0中操作数据之六十二:GridView批量更新数据
- 在ASP.NET 2.0中操作数据之六十二:GridView批量更新数据
- ASP.NET网站运行常见错误以及解决方法(持续更新)
- asp.net c# 对GridView编辑,删除,更新,取消的操作
- asp.net操作过程中常见错误的解决方法
- ASP.NET常见错误,原因及解决方法(2003版)_不断更新.....
- PRB:ASP 返回“Operation Must Use an Updateable Query”(操作必须使用可更新的查询)错误
- ASP.NET Gridview特效(持续更新中...)
- asp.net 对Execl 的添加,更新操作
- Asp.net 网站布局常见错误
- Asp.Net 2.0 操作mysql 数据基类(读取,删除,插入,更新)
- ASP.NET编译执行常见错误及解决方法汇总之二
- 在ASP.NET 2.0中操作数据之五十:为GridView控件添加Checkbox
- ASP.NET之旅(四):IIS网站部署步骤及常见错误
- ASP.NET常见错误,原因及解决方法(2003版)
- ASP.NET GridView里操作DropDownList