1.我想问下GridView这个控件的数据是什么时候加载的。在页面的生命周期里面的那个周期加载的?比如在 Page_Load 事件运行之后、控件事件处理方法调用之前。(这个我是看msdn关于动态 Web 服务器控件和视图状态中讲的)
2.GridView从数据库中取数据是每次返回页面都会获取还是只是第一次请求页面时候才获取?
3.如果只获取一次的话那数据内容是如何保存的?还有asp.net是如何保证,在第一次获取数据库中数据内容后,接下来返回的页面中的内容与数据库中的保持一致?
@sp1234asp.netgridview 

解决方案 »

  1.   

    想搞清楚这些问题,先得搞清楚web程序工作原理和asp工作原理
      

  2.   

    1.Page_Load 事件中加载
    2.每次返回页面都会获取
    3.由于2所以没有3
      

  3.   

    哈哈,sp1234不在工作区。
    我就是不太了解asp.net的gridview控件的具体工作原理。感觉gridview这个控件跟一般的控件有些不同,尤其跟datasource控件联合使用的时候。
    在http://bbs.csdn.net/topics/330161310这个帖子中sp1234说“如果你不小心每一次都在代码中绑定数据源,则这个程序肯定是及其慢的,而且多余。这种每次回发都重新读取数据的做法只有在asp的程序中才会遇到。 ”我理解的就是正常情况下,asp.net只会在首次接收到页面请求(而非页面返回)时才从数据库中读取数据。
    现在按照你说的我就能理解了。
    我原来写了个页面,用了一个gridview控件,然后用textbox和button写了个筛选功能。全部数据有五条,然后在textbox写上筛选条件然后点button,gridview里面就只有1条数据了。但是紧接着如果我点了这条数据的编辑按钮(用gridview的commandfiled实现的)然后点更新,返回的页面又成了5条数据。但是我想要就算我点了更新返回的页面里面gridview还是1条数据。关键是,因为返回结果变多了,有的时候更新的就不是我要更新的那一条数据,这个很可怕啊。
    后来我在Page_Load里面每次都判断下筛选条件是否被选上,只要选上就在Page_Load里动态绑定一次gridview(实现的方法是重写gridview关联的datasource控件的selectcommand属性)。但是放在Page_Load里这些代码没效果,如果放在Render里面就可以。所以我咋觉得问题1的答案不是在Page_Load中啊。