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

来源:互联网 发布:mac 终端 默认路径 编辑:程序博客网 时间:2024/06/01 10:34

 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事件依然会调用,但不会如寻找和依赖ObjectDataSourceDeleteMethod方法了。可以看出只要GridView指定了DataSourceId,在删除Gridview记录时就会自动找ObjectDataSource的相关的DeleteMethod。


3. RowUpdating:行正在修改事件

       各项操作和注意事项和RowDeleting一样。



总结:

1. GridView中一定是先调用RowCommand事件再调用RowDeletingRowUpdating事件

              2. 不要在自定义的CommandName属性中使用“DeleteUpdateInsertSelect”四个名称,这四个名称被GridView自动完成事件所占用。

 

 

原创粉丝点击