情况如下:
在一个页面上有一个用户控件,控件也是动态生成。
选择控件后的值后,回发后想再取得值,但每次 GetControlValue();
取到的都是刚初始化的值,而不是选择后的值,但回发完成后,选择的值还在~~
其中的顺序那位给讲解一下。
protected void Page_Load(object sender, EventArgs e)
{            ControlInit();
            GetControlValue();
}//
private void GetContrlValue()
{
    string str=(controltype)this.FindControl("xxx").value();
}

解决方案 »

  1.   

    你是否了解asp.net页面生存周期?如果不了解,请在搜索引擎中查找关键字“asp.net页面生存周期”。会有你要的知识的。
      

  2.   

    protected void Page_Load(object sender, EventArgs e)
    {
        if(!IsPostBack)
        {
                ControlInit();
                GetControlValue();
        }
    }//
    private void GetContrlValue()
    {
        string str=(controltype)this.FindControl("xxx").value();
    }
      

  3.   

    使用!IsPostBack,并且将ControlInit放在Page_Init事件中
      

  4.   

    if(IsPostBack)
        {
                ControlInit();
                GetControlValue();
        } 
      

  5.   

    if(!IsPostBack) 
        { 
                ControlInit(); 
                GetControlValue(); 
        } 另外最好不要用动态生成控件
      

  6.   

    支持四楼的观点,初学者经常遇到这样的问题.
    if(!IsPostBack)表示第一次访问页面时要执行的程序,有点像初始化页面,当你点击了当前页面的一些按钮后,将不会再执行这些程序。 判断页面是第一次访问还是通过页面上的控件postback的 .
      

  7.   

    C# codeprotectedvoid Page_Load(object sender, EventArgs e) 
    {
         ControlInit(); 
         if(!IsPostBack) 
        { 
                
                GetControlValue(); 
        } 
    }//privatevoid GetContrlValue() 
    这样行么?
      

  8.   

    0.
    是 IsPostBack 的问题,1.
    但是我们不知道你的 ControlInit() 是什么滴的干活,如果你的  ControlInit() 包含了动态创建控件的代码,那么上面的回复全军覆没,2. 
    假设  ControlInit() 拆成 Label lbl;
    CreateControlInstances() {
    lbl = new Label();
    Controls.Add(lbl);
    }SetControlProperties() {
    lbl.Text = "Hello"; 
    }
    那么Page_Init
    {
    CreateControlInstances(); // 每个请求都要执行
    }Page_Load
    {
    if(!IsPostBack) {
    SetControlProperties();
    }
    string s = GetControlValue();
    }
    Hope helpfulXiaofeng
      

  9.   

    首先你的代码在每次页面回发都会走GetControlValue的,就等于每次都初始化一遍,你从这个方面想想。
      

  10.   

    ControlInit() 包含了动态创建控件的代码,因这控件个数和组织形式都是根据数据库动态生成的~