回发后telerik radgrid数据源为null

时间:2010-07-13 21:02:20

标签: c# telerik telerik-grid

在回传RadGrid.DataSource上将DataSource分配给Linq查询后为空。在应用了所有过滤器和排序后,是否可以获取RadGrid使用的数据来填充网格?

修改

可用于获取数据的唯一方法标记为内部。我想我现在就要放弃了。如果我稍后找到解决方案,我会在这里发布我的答案。

3 个答案:

答案 0 :(得分:4)

这不是一个telerik的事情。对于所有控件,DataSource属性将始终为null,除非您在每次回发时显式重新分配并重新绑定它。

您可以使用Session或Cache,甚至 gasp ViewState来保持DataSource,但我会建议不要使用它。理想情况下,您在网格上执行的任何操作(如排序和分页)都会导致另一个数据库访问该信息。

修改
避免在Session或Cache中存储这种类信息的原因是因为它很大,而且是每个用户。如果您的服务器上有无限的内存,那么无论如何都要在会话和缓存中为每个用户存储数据集,但大多数时候您希望保持每个用户的内存占用空间很小。

在ViewState中存储此信息在很大程度上是浪费,因为您只会向客户显示一小部分行,但通过其膨胀的ViewState为他们提供 HUGE 下载。

最后,需要注意在数据访问级别处理分页,排序和过滤,以便您只检索要实际显示用户的行。

答案 1 :(得分:3)

Telerik在其控件上有一个NeedDataSource事件处理程序。在那里设置数据源。

protected void radGridVesselSpecs_NeedDataSource(object source, GridNeedDataSourceEventArgs e)
{
    if (this.Vessel == null)
        return;

    this.radGridVesselSpecs.DataSource = this.Vessel.Specifications;
}

答案 2 :(得分:0)

您有两个选择,一个用于将数据源对象存储到会话中。或者您可以使用任何DataSource控件并在回发期间重新绑定它。