Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# telerik radgrid数据源回发后为空_C#_Telerik_Telerik Grid - Fatal编程技术网

C# telerik radgrid数据源回发后为空

C# telerik radgrid数据源回发后为空,c#,telerik,telerik-grid,C#,Telerik,Telerik Grid,将RadGrid.DataSource分配给回发上的Linq查询后DataSource为空。在应用所有过滤器和排序后,是否可以获取RadGrid用于填充网格的数据 编辑 唯一可用于获取数据的方法标记为内部。我想我现在就要放弃了。如果我以后找到解决办法,我会把我的答案贴在这里。这不是telerik的事。对于所有控件,除非在每次回发时显式地重新分配和绑定数据源属性,否则数据源属性将始终为null 您可以使用Session或Cache,甚至gasp ViewState来保存数据源,但我建议您不要这样做

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

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

这不是telerik的事。对于所有控件,除非在每次回发时显式地重新分配和绑定数据源属性,否则数据源属性将始终为null

您可以使用Session或Cache,甚至gasp ViewState来保存数据源,但我建议您不要这样做。理想情况下,您在网格上执行的任何操作(如排序和分页)都应该导致再次访问数据库以获取该信息

编辑:
避免将此类信息存储在会话或缓存中的原因是,此类信息很大,而且是按用户存储的。如果您的服务器上有无限的内存,那么一定要将数据集存储在会话和缓存中每个用户的所有位置,但大多数情况下,您希望保持每个用户的内存占用很小

在ViewState中存储此信息在很大程度上是浪费的,因为您将只向客户显示一小部分行,但通过其臃肿的ViewState为客户提供大量的下载


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

这不是telerik的事情。对于所有控件,除非在每次回发时显式地重新分配和绑定数据源属性,否则数据源属性将始终为null

您可以使用Session或Cache,甚至gasp ViewState来保存数据源,但我建议您不要这样做。理想情况下,您在网格上执行的任何操作(如排序和分页)都应该导致再次访问数据库以获取该信息

编辑:
避免将此类信息存储在会话或缓存中的原因是,此类信息很大,而且是按用户存储的。如果您的服务器上有无限的内存,那么一定要将数据集存储在会话和缓存中每个用户的所有位置,但大多数情况下,您希望保持每个用户的内存占用很小

在ViewState中存储此信息在很大程度上是浪费的,因为您将只向客户显示一小部分行,但通过其臃肿的ViewState为客户提供大量的下载


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

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

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

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

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

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

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

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

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

有趣。您知道是否仍然可以从网格本身获取数据吗?(不仅仅是可见行)理想情况下,只有可见行才是从数据库检索的行。其他东西都丢了。所有数据基本上都转换为填充网格上可见行所需的值。所以除非您使用类似SqlDataSource的东西,否则无法真正检索强类型值,但即使这样,通常也会在每次回发时重新绑定数据源。通过网站,您看到的都是可见的行,页面上似乎没有其他内容,但telerik有某种缓存选项可用。所以我希望能直接访问它-我确实找到了这个
这个.RadGrid2.MasterTableView.Controls(0).行
,它包含了我需要的内容,所以我要朝那个方向去看看我找到了什么,然后我会回到这里……感谢您对初级读者的一个小小的澄清:Josh似乎暗示,如果您拥有的大数据不是每个用户唯一的,那么会话是一个更好的解决方案,但会话总是每个用户唯一的(因此得名)。@cdonner-我不确定您如何能够从我写的内容中推断出这条推理路线。我从来没有说过什么时候应该使用
会话
,只是每个用户的内存占用应该非常小。很有趣。您知道是否仍然可以从网格本身获取数据吗?(不仅仅是可见行)理想情况下,只有可见行才是从数据库检索的行。其他东西都丢了。所有数据基本上都转换为填充网格上可见行所需的值。所以除非您使用类似SqlDataSource的东西,否则无法真正检索强类型值,但即使这样,通常也会在每次回发时重新绑定数据源。通过网站,您看到的都是可见的行,页面上似乎没有其他内容,但telerik有某种缓存选项可用。所以我希望能直接访问它-我确实找到了这个
这个.RadGrid2.MasterTableView.Controls(0).行
,它包含了我需要的内容,所以我要朝那个方向去看看我找到了什么,然后我会回到这里……感谢您对初级读者的一个小小的澄清:Josh似乎暗示,如果您拥有的大数据不是每个用户唯一的,那么会话是一个更好的解决方案,但会话总是每个用户唯一的(因此得名)。@cdonner-我不确定您如何能够从我写的内容中推断出这条推理路线。我从来没有说过什么时候应该使用
会话
,只是说每个用户的内存占用应该非常小