我正在使用框架2.0,我不明白在执行回发后数据网格和数据集的工作原理。在msdn中说如果请求是回发,则不需要再次执行数据绑定。但我的问题是:如果没有数据绑定,datagrid如何再次显示记录?我认为asp.net在缓存中保存了查询结果,但我不确定。请告诉我.NET用来实现它的机制是什么。
我有一个大的查询结果(数百个),每50条记录分页,我想避免每次用户选择接下来的50条记录时都进行相同的查询。
提前致谢。
答案 0 :(得分:3)
对此的回答是观点。整个显示的网格存储在视图状态中,并且它会在回发中持续存在。
即网格在初始页面加载时定义并存储在viewstate中。当用户单击链接/按钮以回发表单时,视图状态将被解码并可再次使用。因此,您无需重新绑定网格。但是说有一些需要注意的注意事项。
答案 1 :(得分:2)
ASP.NET将以前的值保存到ViewState中,因此它们不会在回发之间丢失。
但在你的情况下,你谈论的是分页,新记录。如果您是在第一次请求时检索它们,也许您可以将它们存储在viewstate中,但这不是一个好主意。如果你有很多记录,你的页面将会很慢。
如果您的客户每次都获得相同的数据,并且在显示数据时当前的数据更改并不重要,那么您可以使用asp.net's caching mechanism对其进行缓存。
答案 2 :(得分:1)
Viewstate是一个神奇的词:P
答案 3 :(得分:1)
ASP.NET WebForms完全是ViewState。
概念基本上是ASP.NET将信息存储在页面上的隐藏输入元素中,然后使用回发自动检索服务器端,回发将表单(包裹整个站点)发布回服务器。 / p>