有一个Panel,ID为Panel1
有一个Button,ID为Button1
我每点击Button一次,就往Panel里添加一个Label为什么只能添加一个??最新添加的总是覆盖了前一个,是怎么回事?    protected void Button1_Click(object sender, EventArgs e)
    {
        string time = DateTime.Now.Second.ToString();        Label lbl = new Label();
        lbl.Text = time;
        lbl.ID = time;        this.Panel1.Controls.Add(lbl);
    }

解决方案 »

  1.   

    本来就会这样。刷新一次后加的控件都没有了。跟web控件生命周期有关,我不是很懂。学习
      

  2.   

    页面载入的时候,要存在一个label并且把 Label的信息缓存起来,当你点击Button增加的时候,首先从缓存中获得Label的信息,然后再添加,添加后再缓存起来,再载入一下才能实现
      

  3.   

    对于动态增加的控件,你可以使用 ViewState 保存他们的状态,然后在每次 Page_Load 的时候重新加载,否则就会出现楼主的情况。
      

  4.   

    不是新添加的覆盖了,而是每次你点击按钮后页面都重新执行了一次,原有填加的没有保存下来,如果你想保存的话,可能需要ViewState等其他方式保存这些信息
      

  5.   

    请参考private void Page_Load(object sender, System.EventArgs e)
    {
    if(ViewState["count"] != null)
    {
    int count = Convert.ToInt32(ViewState["count"]);
    for(int i = 0; i < count; i++)
    {
    Label lbl = new Label();
    lbl.Text = "aa";
    lbl.ID = "Label" + i;
    this.PlaceHolder1.Controls.Add(lbl);
    }
    }
    }
    private void Button1_Click(object sender, System.EventArgs e)
    {
    AddControls();
    }public void AddControls()
    {
    Label lbl = new Label();
    lbl.Text = "aa";
    lbl.ID = "Label" + Convert.ToInt32(ViewState["count"]);
    ViewState["count"] = Convert.ToInt32(ViewState["count"]) + 1;
    this.PlaceHolder1.Controls.Add(lbl);
    }如果你要打算标签上显示当前时间,还要用变量存放
      

  6.   

    把Panel1的属性设置加一条 EnabledViewState="true", Panel1中原来有一个 Label完整后台代码(已测试):protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                Label1.Text = idtime();
                Label1.ID = idtime();
                Panel_Load();
            }
        }
        private void Panel_Load()
        {
            ArrayList AL = new ArrayList();
            foreach (Control LB in Panel1.Controls)
            {
                if (LB.GetType().ToString() == "System.Web.UI.WebControls.Label")
                {
                    Label labl = (Label)LB;
                    AL.Add(labl);
                }
            }
            Session.Add("label",AL);
        }
        private void GetInfo()   //获取当前AL中Label集的信息
        {
            ArrayList AL = new ArrayList();
            AL = (ArrayList)Session["label"];
            if (Session["label"] != null)
            {
                for (int i = 0; i < AL.Count; i++)
                {
                    Panel1.Controls.Add((Label)AL[i]);
                }
            }
        }    private void AddLabel()  //动态添加Label的处理
        {
            ArrayList Al = new ArrayList();
            this.Panel1.Controls.Clear();
            GetInfo();
            Label LB = new Label();
            LB.Text = idtime();
            LB.ID = idtime();
            Panel1.Controls.Add(LB);
            Panel_Load();
        }    public string idtime()
        {
            string tim;
            tim = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString() + DateTime.Now.TimeOfDay.Hours.ToString() + DateTime.Now.TimeOfDay.Minutes.ToString() + DateTime.Now.TimeOfDay.Seconds.ToString() + DateTime.Now.TimeOfDay.Milliseconds.ToString();
            return tim;
        }    protected void Button1_Click(object sender, EventArgs e)
        {
            AddLabel();
        }
      

  7.   

    前台:-------------
    |   Button1 |
    |-----------|---------------------------------------------------------------
    |  |-------|                                                  |
    |  | Label1|      Panel1                                      |
    |  |-------|                                                  |
    |--------------------------------------------------------------
      

  8.   

    只有Render事件中添加的控件才能持续存在,否则回发以后都回消失,要永久添加控件,请重写Render和RenderControl
      

  9.   

    这里开始的时候有没有 Label都可以,如果要Panel中开始的时候没有Label,就把 Page_Load()中的Label1.Text="" 和 Label1.ID=""去掉就好了
    不知道楼主需要的是不是这种~! 还是如楼上
     apoclast() ( ) 信誉:100    Blog   加为好友  2007-06-11 13:12:06  得分: 0  
    所说的永久存在。。