当我在自定义分页和排序中启用缓存时,GridView排序不起作用

时间:2009-12-29 11:27:51

标签: gridview sorting paging objectdatasource

我有一个GridView,它使用存储过程进行自定义分页和排序。
它没关系,工作正常(分页和排序),但问题是当我在ObjectDataSource中启用缓存时如下:

 EnableCaching="True"

它正确缓存了用户访问的每个页面,但在这种情况下,当用户想要对其进行排序时会引发错误(如果EnableCaching =“False”,则可以正常工作:

The data source 'ObjectDataSource1' does not support sorting with IEnumerable data. Automatic sorting is only supported with DataView, DataTable, and DataSet.

当我启用缓存时,我应该如何进行排序工作。

谢谢。

3 个答案:

答案 0 :(得分:2)

如果我们启用了缓存,当执行select方法时,在触发Selecting事件之前访问缓存,如果我们搜索的数据在缓存中,  select方法返回缓存数据。

因此,如果我们在选择事件中对输入参数进行任何预处理(例如排序),则缓存不起作用,因为创建的缓存键仅取决于选择参数(及其值)和分页值(如缓存适用于分页)。另请注意,如果我们有一个sort参数,缓存不起作用。

Click here to read more

答案 1 :(得分:0)

这篇文章怎么样 -

  

http://forums.asp.net/p/1509071/3676014.aspx#3676014

我从以下两个网址中获得了领先优势:

  

http://www.codeproject.com/KB/aspnet/GridViewObjectDataSource.aspx   http://forums.asp.net/t/1344883.aspx

在这两个例子中,他们实现了一个处理ODS(Obj数据源)排序的通用排序例程,我们可以设置ODS缓存属性:

EnableCaching="True"

有专家意见吗?

PS:为了提高性能,我在ODS中使用Viewstate以及在ODS中使用ODS和Caching on的GridView禁用了。

答案 2 :(得分:0)