2

我有一个使用存储过程进行自定义分页和排序的 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.

当我启用缓存时,我应该怎么做才能排序工作。

谢谢你 。

4

3 回答 3

2

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

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

点击这里阅读更多

于 2009-12-29T11:39:49.360 回答
0

这个帖子怎么样——

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

我从以下两个 URL 获得了领先优势:

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

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

EnableCaching="True"

有没有专家意见?

PS:为了提高性能,我在 ODS 以及使用该 ODS 的 GridView 和 ODS 中的缓存上都禁用了 Viewstate。

于 2010-02-12T11:42:17.143 回答
0

这是我的评论:

使用具有 EnableCaching = true 的 ObjectDataSource 优化分页和排序

于 2010-02-15T09:35:53.770 回答