【发布时间】:2012-09-26 06:56:29
【问题描述】:
对情况的简短描述。
一个网络应用程序,用户可以在其中选择一些搜索条件,点击搜索按钮,然后查看显示在网格中的结果。
此应用程序在我们的开发服务器上按预期运行。但是,当部署在客户的服务器上时,网格的分页被破坏了:第一页是正确的,但下一页没有返回正确的行。我只能用一个例子来解释会发生什么:
假设第 1 页应显示结果 1-10,第 2 页应显示结果 11-20,等等。
发生的情况是这样的:第 1 页显示 1-10,第 2 页显示 1,2,3,4,6,8,9,28, 29,30第3页显示1,2,3,28,29,36,37,..
所以行被弄乱了,很多结果都没有显示(替换为上一页的结果)。另请注意,这些行不只是偏离了某个数字。
经过数小时的搜索和调试,我只能得出结论,正在使用的 SqlDataAdapter 的 Fill() 方法返回了错误的结果!适配器使用 SqlCommand,将 SQL 查询作为纯文本。我可以在 SQL Server Management Studio 中运行这个查询,它会返回正确的结果,所以它在 .NET 框架本身内部肯定会出错。
我尝试启用 .NET 源代码调试以进入 Fill 方法,但我无法让它工作,所以现在基本上我没有选择了..
非常感谢任何提示/建议!
【问题讨论】:
-
你确定表结构和开发环境完全一样吗?我的意思是主键、数据类型等。
-
昨天我们将数据库从客户那里传输到我们的开发环境中,就在那时我们发现应用程序在我们自己的服务器上运行正常。
-
结果分页的标准是什么 - 可能是排序规则/本地化问题,例如日期时间被自动转换为不同的格式,或者字符串在一台服务器上而不是另一台服务器上不区分大小写?鉴于每台服务器上的设置,它可以解释奇怪的结果吗?
标签: asp.net c#-4.0 sql-server-2012