我發現了一個奇怪行爲與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);
}
(例如添加如果子句始終是真實的)數據被正確地更新。
關於此行爲的任何見解?