我正在修建一个网站,该网站广泛使用DevExpress ASPxGridView控件来搜索SQL Server上的表。然后对结果进行分页和解析。一些搜索结果可能相当大,我怀疑在这些情况下,使用本机SqlDataSource的ASPxGridView的内置分页器非常慢。在一个查询中,我观察到SQL Server和IIS服务器之间的网络流量在不到一分钟的时间内为1.5 GB。使用ORDER BY(SELECT NULL)OFFSET x ROWS FETCH NEXT y ROWS运行相同的查询只需要一瞬间。利用控件上的SQL端分页是另一回事。
看来我的局限和权衡如下:
如果有以下任何可能的解决方案,我想提出建议:
答案 0 :(得分:0)
与mentioned here一样,可以通过设置ASPxGridView
与ObjectDataSource
和ASPxGridView.DataSourceForceStandardPaging = true
一起使用SQL Server端分页。 DevExpress链接到GitHub上的此example application,虽然有点破损,但很容易修复。
它有效,但正如他们所说:
[...]使用ASPxGridView.DataSourceForceStandardPaging时,无法过滤ObjectDataSource数据源。
当前,我正在尝试通过不设置ASPxGridView
来欺骗DataSourceForceStandardPaging
,但仍使用ObjectDataSource
进行服务器端分页:也许可以在结果集中插入虚拟行在ObjectDatasource
的SelectMethod中使用,然后使ASPxGridView
进行“思考”,从而已经从数据库中检索了所有行,以便分页器可以计算正确的总行数。
但是我还没有完成它……很可能必须处理SubstituteFilter
和CustomColumnSort
事件,以防止ASPxGridView
过滤和排序虚拟记录。