我正在编写一个用于查找信用检查的内部Web应用程序。我在这个网站上使用ASP.NET。
我有一个SQL查询,我必须查询信用检查数据库,它返回结果的数据表。在用户单击搜索之后,我会在每次用户单击搜索按钮时运行查询并将返回的数据表绑定到Gridview。
这样可以正常工作,它可以像我们一样填充网格视图。
如何维护绑定到gridview的数据,而不仅仅是回发?例如,假设有人点击分页网格视图的第2页...如何避免在该回发期间丢失网格视图的数据?
目前我在session []中存储数据表,但我不认为我应该这样做,因为这个表的大小非常大(有时会有数十万个结果!)
我是否需要为每次回发重新查询数据库?查询需要一点点,如果我能帮助它,我宁愿不要。
这里的常见解决方案是什么?
答案 0 :(得分:1)
如果你在会话中存储数据,我会确保关闭viewstate并在每次回发时重新绑定它,这样至少你不会将所有数据存储在2个地方。
您还可以考虑将视图状态保留并更改抓取会话数据的逻辑,以便一次恢复一页数据?您将接收当前页面并且JUST返回该页面的数据,以便您可以首先获取所有数据并将其存储在会话中。然后,如果在该页面视图期间发生任何其他回发操作,那么网格上没有任何内容,您不必每次都重新绑定。
我发现我过去遇到的大部分问题都是由于网格中显示的数据太多而导致设计问题更多,我会退一步看看试图解决的整体问题。实现另一个解决方案,不必显示如此多的数据。通常客户/用户要求所有内容,因为他们不考虑任何替代方案或他们的请求的影响。
答案 1 :(得分:0)
有几件事:
ViewState
:缓存数据中,并在每个请求中“重新绑定”数据源