在Telerik中控件RadGrid控件出現的頻率非常高,通常我們會希望RadGrid提供更多的功能,增删改事件是我們經常會遇到的問題。
在RadGrid的屬性欄裡有如下事件:
<a target="_blank" href="http://blog.51cto.com/attachment/201108/101730595.png"></a>
在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内任何事件發生前發生的,是以也可以将事件的執行代碼寫到該事件内,進而不用多次注冊其他事件了!
本文轉自HDDevTeam 51CTO部落格,原文連結:http://blog.51cto.com/hddev/645907,如需轉載請自行聯系原作者