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

问题描述 投票:0回答:3

我有一个 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.

当我启用缓存时,我应该做什么才能进行排序。

谢谢你。

sorting gridview pagination objectdatasource
3个回答
2
投票

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

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

点击此处阅读更多


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(对象数据源)的排序,这样我们就可以设置 ODS 缓存属性:

EnableCaching="True"

有专家意见吗?

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


最新问题
© www.soinside.com 2019 - 2025. All rights reserved.