2009年11月19日 星期四

RADGrid DataKeyNames vs SelectedValues

利用 RADGrid 可以完成很多事情
但是有些小地方沒有注意
他可是理都不理您

RadGrid 中 有一個屬性稱為 DataKeyNames
若要 Server 端的應用程式抓到前端使用者選擇的列 (Row)
DataKeyNames 不設,系統永遠都是傳回空值
剛好自己有一個 Sample 可以 Work
原來是系統會去判斷是否有 PK
並決定 DataKeyNames 的組合

萬一沒有的話
鄉親啊
一定要自己設
因為自己被埋伏在這邊好久, 大概花了一個小時才解決這個問題.

另外 DataSource 與 DataSourceID 的差異
在於Dataset 排序時, 資料是否可以重送
還是選擇 DataSourceID 可以省點開發的時間


另外, 若不採用 DataSourceID 而是自己建立的 Datatable
要記得在 RadGrid.NeedDataSource event 對 source 物件補上對應的 DataSource
Ex:
protected void MYTABLE_NeedDataSource(object source, GridNeedDataSourceEventArgs e)
{
// 從 Session 抓到的物件
DataTable t = (DataTable)Session["MYTABLE"];
// 補上對應的 DataSource
(source as RadGrid).DataSource = t;

}

2 則留言:

  1. 在網路上找到你的文章, 畢竟用telerik又會中文的人真少啊..想問問這個needdatasource究竟有什麼大用處? 我看都是master table用self-reference再配上detail-table時才會試用呢..因為在這個情況下好像不能2個table都用sqldatasource/accessdatasource

    回覆刪除
  2. NeedDataSource 表示資料異動時,系統先會判斷是否該 event 有對應的程式,若有則處理該段的 event code.
    注意: 寫了 NeedDataSource 就不需要再 Call ReBind 或是 DataBind

    回覆刪除