【问题标题】:GridView sorting doesn't work when I Enable Caching in Custome Paging and sorting当我在自定义分页和排序中启用缓存时,GridView 排序不起作用
【发布时间】:2010-12-30 18:10:34
【问题描述】:

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

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

谢谢。

【问题讨论】:

    标签: gridview sorting paging objectdatasource


    【解决方案1】:

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

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

    Click here to read more

    【讨论】:

      【解决方案2】:

      这篇文章怎么样 -

      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 和使用该 ODS 的 GridView 中禁用了 Viewstate,并在 ODS 中启用了缓存。

      【讨论】:

        【解决方案3】:
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-09-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-09
        • 1970-01-01
        相关资源
        最近更新 更多