我有一个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.
当我启用缓存时,我应该如何进行排序工作。
谢谢。
答案 0 :(得分:2)
如果我们启用了缓存,当执行select方法时,在触发Selecting事件之前访问缓存,如果我们搜索的数据在缓存中, select方法返回缓存数据。
因此,如果我们在选择事件中对输入参数进行任何预处理(例如排序),则缓存不起作用,因为创建的缓存键仅取决于选择参数(及其值)和分页值(如缓存适用于分页)。另请注意,如果我们有一个sort参数,缓存不起作用。
答案 1 :(得分:0)
这篇文章怎么样 -
我从以下两个网址中获得了领先优势:
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)