【问题标题】:Data in Telerik RadGrid not updated using LINQ-to-SQL (strange behavior)Telerik RadGrid 中的数据未使用 LINQ-to-SQL 更新(奇怪的行为)
【发布时间】:2013-10-09 11:56:11
【问题描述】:

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

假设我有一个带有 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);
}

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

对此行为有何见解?

【问题讨论】:

    标签: c# asp.net linq-to-sql telerik-grid radgrid


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-17
      • 1970-01-01
      • 1970-01-01
      • 2011-03-15
      相关资源
      最近更新 更多