我正在使用代码填充 GridView,将数据源设置为查询返回的数据集。所以显然排序和分页不仅仅像我使用datasourceid = some sqldatasource那样神奇地工作。
我在网上找到了许多如何执行此操作的示例,但它们似乎每次都重新执行查询。查询的内容不应该保存在视图状态吗?有什么方法可以只获取之前的查询结果并重新排序而无需返回数据库?(它是否将所有数据保存在视图状态?如果是,为什么我不能得到它?将它全部发送到用户的浏览器并全部发送回来似乎很愚蠢,浪费所有带宽,如果没有到达它的方法。)
此外,如果我尝试允许分页,似乎每次用户转到另一个页面时我都必须重新执行查询。如果用户先排序然后翻页,那么我必须记住隐藏字段中的排序顺序是什么,这样我就可以重新读取数据,重新排序,然后转到正确的页面。
鉴于当您使用数据源控件时,所有这些行为都是内置的,我想我在这里遗漏了一些东西。但是考虑到所有以这种缓慢而艰难的方式完成的示例,如果我遗漏了某些东西,那么很多其他程序员也会遗漏它。