我在ReportViewer中遇到了一个奇怪的交互式排序和分页问题,我无法弄清楚。我正在aspx页面中使用本地报表定义和ReportViewer控件。我已将AsynchRendering设置为true。除了这个问题,一切似乎都很好。以下是重现问题的步骤:
(page 1 before all sorts)
COL1 | COL2
a 1
c 3
b 2
1) 在第1页,按COL1升序排序
-排序正确
(page 1)
COL1 | COL2
a 1
b 2
c 3
2) 导航到第2页
-排序正确
(page 2)
COL1 | COL2
d 4
e 5
f 6
3) 按X列降序排序(执行此操作后,它会自动返回到第1页)
-排序正确
(page 1)
COL1 | COL2
z 26
y 25
w 24
4) 再次导航到第2页
-排序不正确;数据仍然按升序排序,就像在第2页上从未发生过排序点击一样
(第2页)
COL1 | COL2
d 4
e 5
f 6
其他奇怪的事情:
-
如果我从第1页导航到第2页以外的任何其他页面,则排序顺序是正确的,如果我从除第1页以外的其他任何页面导航到第二页,则排序方向是正确的。
-
如果我将AsyncRendering设置为false,我根本没有这个问题。不过,我需要将AsyncRendering设置为true。
-
这个问题只发生在IE6和IE7中。我在Firefox或Chrome中不会遇到这种情况。
-
这是最奇怪的一个=>这个问题只有在我部署到web服务器后才会发生。如果我在计算机上的Visual Studio 2008开发服务器上运行它,一切都会毫无例外地完美运行。
这是一个问题,因为我工作的公司几乎只使用IE6/IE7,这种排序功能是必需的,如果我不使用AsyncRendering,页面会太慢。
如有任何帮助,我们将不胜感激。
(评论来自我在有足够的声誉可以发表评论之前所做的回答):
关于这件事,我还注意到了另一件事。使用fiddler,我观察了每次排序点击和导航点击时的http请求/响应,我注意到从第1页导航到第2页时没有http GET请求。所有其他导航点击和排序点击都会发出GET请求,然后用相应的响应刷新html。如果在发生另一次排序后从页面1导航到页面2时没有GET请求,则页面将不会刷新为当前排序顺序。在我看来,这似乎是一个ReportViewer AJAX错误。。。