在Telerik中控件RadGrid控件出现的频率非常高,通常我们会希望RadGrid提供更多的功能,增删改事件是我们经常会遇到的问题。

在RadGrid的属性栏里有如下事件:

Delete、Upadate、Insert事件触发常见错误_事件处理

在RadGrid中有一个Button或者telerik:GridButtonColumn项中,其CommandName不为Delete(Update、Cancel、Edit,该列用Delete说明),当点击“删除”时发现Delete事件并没有发生,用debug跟踪发现,debug光标根本没有进入该DeleteCommand事件中,所以该Delete才没有发生。当CommandName=“Delete”时发现光标就进入DeleteCommand中了,这就说明该控件的Delete事件内部默认执行DeleteCommand的CommandName为Delete,只有当RadGrid控件内部某一标签的CommandName为Delete时候该标签的点击会自动的触发RadGrid的DeleteCommand事件。同理“取消、更新、插入”事件也是如此。

     如果在后台的代码中不想注册这么多的事件,此时可以用ItemCommand事件来统一注册。在后台这样写:

 

1      protected void rgDetailInfo_ItemItemCommand(object source, GridCommandEventArgs e)
2       {
3           if (e.CommandName == "btDelete")
4           {
5               string name = e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["Name"].ToString();
6               dataService.DeleteOneConfigByParamName(day, sex, name);
7           }
8           if(e.CommandName =="btUpdate"
9           {
10              //更新代码更新代码
11          }
12          
13      }

这时CommandName可以是系统默认的也可以是自定的字符串了。也可以多次判读,将添加,更新事件也写进去。ItermCommand事件先于DeleteCommand等事件执行,ItermCommand是在RadGrid内任何事件发生前发生的,所以也可以将事件的执行代码写到该事件内,从而不用多次注册其他事件了!