Optimization 优化分页&;使用EnableCaching=true的ObjectDataSource进行排序
我正在使用一个由Linq To SQL类备份的ODS(ObjectDataSource)在我的页面上填充Gridview 考虑到性能,我已经禁用了Gridview的Viewstate,并在ODS中启用了缓存 除此之外,我还优化了LINQtoSQL类中的搜索方法,以使用.skip和.take方法仅获取“pageful”记录Optimization 优化分页&;使用EnableCaching=true的ObjectDataSource进行排序,optimization,sorting,caching,pagination,objectdatasource,Optimization,Sorting,Caching,Pagination,Objectdatasource,我正在使用一个由Linq To SQL类备份的ODS(ObjectDataSource)在我的页面上填充Gridview 考虑到性能,我已经禁用了Gridview的Viewstate,并在ODS中启用了缓存 除此之外,我还优化了LINQtoSQL类中的搜索方法,以使用.skip和.take方法仅获取“pageful”记录 现在的问题是,由于缓存,ODS无法自行“排序”记录集。如本线程所述: 人们建议使用自定义排序并实现“Comparer”,但我相信这会破坏我的性能优势 我已经准备好在排序时
现在的问题是,由于缓存,ODS无法自行“排序”记录集。如本线程所述: 人们建议使用自定义排序并实现“Comparer”,但我相信这会破坏我的性能优势 我已经准备好在排序时进行DB trip,但是在打开缓存时如何将其分离 仅供参考,我已经有了一个AJAX更新面板,其中有这个Gridview(EnableViewstate=false)和ODS(EnableCaching=true)。希望我在正确的道路上。。。欢迎提出建议
我必须使用“自定义排序”在应用程序端执行排序(也就是说,添加额外的方法来启用对一般对象集合的排序)。这个解决方案是不可接受的,因为它要求我从数据库中提取所有记录,然后对它们进行排序 首先,我不相信应用程序能比数据库做得更好/更快。其次,这破坏了优化分页所带来的整体性能优势,我使用.skip()和.take()LINQ方法只获取“分页”记录 好吧,最后我不得不发明一种 我自己的。可能只限于我这一类人 当然是这样,但肯定有很多 更容易,也保存了 两种分页方式的优化 以及数据缓存 我的解决方案: 我已点击Gridview的“排序”事件。如果我允许ODS尝试自行对缓存数据进行排序,则会触发“自定义排序”错误。相反,现在我手动执行排序并取消排序事件。 为此,我只需在ODS中显式地设置'orderBy'参数,并在Gridview的'Sorting'事件中将其设置为新的排序表达式。这将刷新网格,最后我将执行以下操作:
- 这会告诉ODS取消排序 (我以前已经表演过了 取消事件(如上所述)。它的 就像我在欺骗ODS和处理 在后台进行排序。谢谢 它感觉到 “SelectParameters[“orderBy”]”已被删除 更改并执行一次选择 再一次。我喜欢上一种 自动存储在 'odsOrganization.SelectParameters[“orderBy”].DefaultValue' 我可以在接下来使用它 迭代
链接不错,但它破坏了我的性能优势,因为它要求我获取所有数据。
odsOrganization.SelectParameters["orderBy"].DefaultValue = GetSortExpr(e.SortExpression);
...
e.Cancel = true;