在Telerik中控件RadGrid控件出现的频率非常高,通常我们会希望RadGrid提供更多的功能,增删改事件是我们经常会遇到的问题。
在RadGrid的属性栏里有如下事件:
在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事件来统一注册。在后台这样写:
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内任何事件发生前发生的,所以也可以将事件的执行代码写到该事件内,从而不用多次注册其他事件了!
本文转自HDDevTeam 51CTO博客,原文链接:http://blog.51cto.com/hddev/645907,如需转载请自行联系原作者
