您的位置:首页 > 编程语言 > ASP

ASP.NET GridView自动更新操作的常见错误

2012-02-28 15:37 435 查看
GridView的RowDeleting、RowUpdating和RowCommand事件

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自动完成事件所占用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: