刚开始只要记得
if(!IsPostBack)
{
    //这里的代码在页面首次显示时执行,其他情况下不再执行。
}
那么,其他情况是什么?
点击页面上的按钮<asp:Button>,会发现IE的‘后退’按钮亮了。
说明服务器又新生成了一个全新的页返回到客户端,虽然IE地址栏上显示的地址是一样,但要记得这回和刚才显示的页完全没有关系,是一个经过服务器处理后生成的完全新的页面。在IE地址栏里输入地址后显得的页面的IsPostBack肯定是false, 点击页面上触发所谓PostBack的按钮等等时,新返回来的页面的IsPostBack==true.

解决方案 »

  1.   

    谢谢大家。我想知道if(!IsPostBack) 与数据的实例,好象与数据绑定有关,这方面不理解
      

  2.   

    if(!IsPostBack) 
    ------------------
    ispostback是判断页面是否已经发送过请求。
    如果是第一次,则返回false,如果不是,则返回true.
    所以if(!ispostback)里面的代码只有第一次请求时才会执行,如果再操作页面的其他按钮或者什么事件时。就不会再执行if(!ispostback)里面的代码了。。  
      

  3.   

    谢谢大家。我想知道if(!IsPostBack)   与数据的实例,好象与数据绑定有关,这方面不理解
         --与数据有关?
           俺的理解是一些空间的数据只需要在第一次生成页面的时候绑定,这样可以减轻服务器负担,例如一个dropdownlist只需要在页面第一次显示的时候初始化即可
      

  4.   

    IsPostBack这个属性是判断当前页面是不是回发状态(比如页面加载完成之后再刷新或者触发服务器控件),因此相对的!IsPostBack就是判断页面是不是第一次加载。原则上来说这个属性和数据绑定没有直接关系,不过一般都会把数据绑定的方法写在!IsPostBack块里。其原因在于一般的数据绑定方法都要访问数据源,而无论数据源是何种类型,例如数据库、XML文件,XLS文件等,请求数据源和关闭数据源都要消耗额外的资源,最明显的就是时间。同时,对于ASP.NET服务器控件而言,每个控件本身拥有一个ControlState(可以理解为控件自己的ViewState)用于保存控件本身的状态,比如控件中的数据等等,这也就是为什么服务器控件在页面刷新后值仍然能留在控件中,而普通的HTML控件一刷新值就没有了道理。因此基于这两点,我们一般把数据绑定的方法写在!IsPostBack块中,也就是只有页面第一次加载时才执行数据绑定,否则略过获取数据的步骤,因为控件本身可以保存刷新之前控件内的值,这也是为了不浪费资源,其实就是提高页面回发时的响应速度,改善用户体验,就是这样了,欢迎切磋
      

  5.   

    把数据操作放在if(!IsPostBack)   里面
    会少很多麻烦~
      

  6.   

    比如:两个dropdownlist控件联动时,主dropdownlist(即直接从数据库中取数据的那个)可放在if(!postback){}里面,而从dropdownlist(根据主dropdownlist中的选择的值而从数据库中取数据的dropdownlist)写在if(!postback){}外面,但在之前要先清一下从dropdownlist里的数据(要不然有重复列)!这样只要主dropdownlist的autopost属性被选上就能实现联动了!