Telerik RadGrid 中的数据未使用 LINQ-to-SQL 更新(奇怪的行为)

本文关键字:LINQ-to-SQL RadGrid 数据 未使用 Telerik 更新 | 更新日期: 2023-09-27 18:34:29

我发现使用LINQ To Sql的Telerik RadGrid数据源存在奇怪的行为Microsoft我想知道是什么原因造成的。

假设我有一个包含 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 查询视图始终返回一致且更新的结果。

在我的程序中更新源表 DETAIL 时,我正常调用

grid.DataBind() 

以更新其内容。令人惊讶的是,没有任何更新(例如,上面提到的计算列仍然是旧值(。在处理了一些解决方法后,我发现将grid_NeedDataSource处理程序上的上述源代码更改为

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

(例如,添加始终为真的 Where 子句(数据现在已正确更新。

对此行为有任何见解吗?

Telerik RadGrid 中的数据未使用 LINQ-to-SQL 更新(奇怪的行为)

尝试调用Rebind()而不是DataBind()

根据Telerik的说法,当您需要重新分配RadGrid的数据源时,您应该调用Rebind()。 查看此 Telerik 页面上的第二部分滥用或不使用 NeedDataSource 事件,了解更多信息。