public partial class _Default : System.Web.UI.Page 
{
    public Boolean b1 = false;    protected void Page_Load(object sender, EventArgs e)
    {        if (b1)
        {
           加载事件...
        }
        
        
    }    protected void Open_Click(object sender, EventArgs e)
    {
        ...         if(..)
        {
          b1 = true;
         }
          else        {
           b1 = false;
        }
    }
}
我想知道在Open_Click()里面b1变成true以后,为什么到了Page_Load()里面还是false,是不是每次页面重新加载的时候b1都会重新初始化?

解决方案 »

  1.   

    每次页面刷新都会变的了、。、
    你写成这样。。public partial class _Default : System.Web.UI.Page  
    {
      
      protected void Page_Load(object sender, EventArgs e)
      {
      if(!Ispostback)
    {
    public Boolean b1 = false;  if (b1)
      {
      加载事件...
      }
    }
      

  2.   

    是都会被初始化所以要放在一个可以存储的单位内,如:ViewState,Session,用的时候再读出来
      

  3.   

    public partial class _Default : System.Web.UI.Page  
    {  protected void Page_Load(object sender, EventArgs e)
      {  if (ViewState["b1"]!=null && ((bool)ViewState["b1"]))
      {
         //加载事件...
      }
        
        
      }  protected void Open_Click(object sender, EventArgs e)
      {
      ...  if(..)
      {
      ViewState["b1"] = true;
      }
      else  {
      ViewState["b1"] = false;
      }
      }
    }
      

  4.   

    //经过测试....
        protected void Page_Load(object sender, EventArgs e)
        {
                AddButton();
        }
        private void AddButton()
        {
            if (this.ViewState["aa"] != null && this.ViewState["aa"].ToString() == "1")
            {
                Button btn = new Button();
                btn.ID = "btn";
                btn.Text = "btn";
                btn.CommandArgument = "aaaaaaaaa";//可以在事件中得到的值
                btn.Command += new CommandEventHandler(btn_Command);
                this.p1.Controls.Add(btn);
            }
        }
        private void AddButton2()
        {
            //移除pgeg_load内生成的
            if (this.p1.FindControl("btn") != null)
            {
                this.p1.Controls.Remove(this.p1.FindControl("btn"));
            }
            //重新生成
            AddButton();
        }    void btn_Command(object sender, CommandEventArgs e)
        {
            //e.CommandArgument.ToString()为btn.CommandArgument的值
            //....
            Response.Write(e.CommandArgument.ToString());
        }
        protected void btn1_Click(object sender, EventArgs e)
        {
            if (this.txt1.Text.Trim() == "1")
            {
                this.ViewState.Add("aa", "1");
            }
            else
            {
                this.ViewState.Add("aa", "0");
            }
            AddButton2();
        }
      

  5.   

    if(!Ispostback)
    {}此判断不可缺少!
      

  6.   

    这个是很基础的,当你点击按钮的时候,会执行postback,Page_Load方法会先执行,然后再执行你的按钮click事件绑定的方法。if(!Ispostback)
    {}就是区别是不是Postback,如果是第一次加载页面就不是Postback,这个if语句里面的才会执行。
      

  7.   


    是的  每次点击以后,都是Page页面一个新的实例  可以写一个简单的事例测试一下
    //代码随手写的  未测
    public partial class _Default : System.Web.UI.Page  
    {
      private date;
      protected void Page_Load(object sender, EventArgs e)
      {
        if(date==null)
        {
          date=DateTime.now;
          Response.Write("第一次加载。  " + date.ToString());
        }
        else
        {
          Response.Write("响应回发  " + date.ToString());
        }
      }
    }
      

  8.   


    //代码随手写的  未测
    public partial class _Default : System.Web.UI.Page  
    {
      private string date;//上面漏了个string   
      protected void Page_Load(object sender, EventArgs e)
      {
        if(date==null)
        {
          date=DateTime.now;
          Response.Write("第一次加载。  " + date.ToString());
        }
        else
        {
          Response.Write("响应回发  " + date.ToString());
        }
      }
    }
      

  9.   


    //代码随手写的  未测
    public partial class _Default : System.Web.UI.Page  
    {
      private string date;//上面漏了个string    加上string  下面也要改了 
      protected void Page_Load(object sender, EventArgs e)
      {
        if(date==null)
        {
          date=DateTime.now.ToString("yyyy-mm-dd hh:mm:ss");
          Response.Write("第一次加载。  " + date);
        }
        else
        {
          Response.Write("响应回发  " + date);
        }
      }
    }