2013-10-09 25 views
3

我發現了一個奇怪行爲與Telerik RadGrid數據源使用Microsoft LINQ To Sql,我想知道是什麼原因導致它。Telerik RadGrid中的數據沒有更新使用LINQ到SQL(奇怪的行爲)

想我也有OnNeedDataSource事件一個基本的網格:

<telerik:RadGrid ID="grid" runat="server" OnNeedDataSource="grid_NeedDataSource"> 
... 
</telerik:RadGrid> 

代碼隱藏事件處理程序:

protected void grid_NeedDataSource(object sender, GridNeedDataSourceEventArgs e) 
{ 
    grid.DataSource = Dal.Db.VIEW_DETAILs; 
} 

在Microsoft SQL Server中VIEW_DETAIL被定義爲一個視圖(其選擇查詢連接多個普通表)。視圖查詢的其中一個源表(假設它的名稱是DETAIL)使用了也存在於視圖中的計算列。直接從Sql查詢視圖總是會返回一致的和更新的結果。

當我在程序的源表詳細信息更新,我叫常

grid.DataBind() 

更新其內容。令人驚訝的是沒有更新(例如上面提到的計算列保持舊值)。處理一些解決方法後,我發現,現在更改源上方的grid_NeedDataSource處理程序

protected void grid_NeedDataSource(object sender, GridNeedDataSourceEventArgs e) 
{ 
    grid.DataSource = Dal.Db.VIEW_DETAILs.Where(x=> 1 == 1); 
} 

(例如添加如果子句始終是真實的)數據被正確地更新。

關於此行爲的任何見解?

回答

0

嘗試撥打Rebind()而不是DataBind()

根據Telerik的說法,當你需要重新分配RadGrid的數據源時,你應該調用Rebind()。檢查第二部分錯誤或不使用NeedDataSource事件關於this Telerik page here以獲取更多信息。