objectDatasource 中的 SelectMethod 被多个 datapagerfield 多次调用
好的,这是设置。我正在构建一个页面,其中包含一个列表视图、一个数据分页器和 3 个数据分页器字段(2 x NextPreviousPagerField、1 x NumericPagerField),以及一个将所有这些组合在一起的对象数据源。
一切都工作正常,直到我在 objectdatsource 控件中指定的 SelectMethod 中放置一个断点。似乎对于每个 datapagerfield 控件,它都在调用 selectmethod 和 selectcount 方法。因此,每当用户寻呼时,它都会调用数据库 6 次而不是 2 次(我没有在 atm 上打开缓存)。如果我删除 1 个数据分页字段,它将删除 2 个调用。
现在这是在 VS2008 中的 asp.net 3.5 SP1 中构建的。当我将相同的代码文件复制到 asp.net 4.0 VS2010 解决方案时,它的重复调用似乎消失了。
这是 asp.net 3.5 SP1 中的错误吗?
提前致谢
Ok, so here is the setup. I am building a page that has a listview, a datapager, and 3 datapagerfield (2 x NextPreviousPagerField, 1 x NumericPagerField), and a objectdatasource to tide all of this together.
It was all working fine until I put a breakpoint into the SelectMethod specified in the objectdatsource control. It seems like that for each datapagerfield control, it is calling the selectmethod and selectcount method. Hence, whenever a user paged, it calls the database 6 times instead of 2 (I don't have caching turned on atm). If I remove one datapagerfield, it will remove 2 calls.
Now this is build in asp.net 3.5 SP1 in VS2008. When I copied the same code files to a asp.net 4.0 VS2010 solution, it duplicate call seems to be gone.
Is this a bug in asp.net 3.5 SP1?
Thanks in advance
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
实际上您应该使用 OnSelecting 事件。
调用 SelectMethod 方法两次
所以我认为你必须实现 OnSelecting 事件
,然后在 ObjectDataSource 尝试调用 count 方法时取消该事件。
您可以使用下面的链接,这样就不会进行另一个数据库调用来获取计数。
http://www.unboxedsolutions.com/sean/archive/2005 /12/28/818.aspx
希望这有帮助。
Actually you should be using the OnSelecting event.
What happens is that ObjectDataSource calls the method SelectMethod twice
So I think you have to implement the OnSelecting event
and then cancel the event when the ObjectDataSource tries to call the count method.
You can use the link below so that another db call is not made to fetch the count.
http://www.unboxedsolutions.com/sean/archive/2005/12/28/818.aspx
Hope this helps.