当前位置:编程学习 > C#/ASP.NET >>

很着急,为什么addpanel.FindControl找不到自控件

自动生成控件    
for (int i = 0; i < num; i++)
            {
                TextBox t = new TextBox();
                t.ID = "text" + i.ToString();
                Label l = new Label();
                l.ID = "lab" + i;
                int k = i + 1;
                l.Text = "<" + k.ToString() + ">";
                this.addpanel.Controls.Add(l);
                this.addpanel.Controls.Add(t);


            }
获取控件:
string textstr = "text" + i.ToString();
 TextBox text = (TextBox)this.addpanel.FindControl(textstr);

这里获取不到生成的控件。text 为null
--------------------编程问答--------------------
for (int i = 0; i < num; i++) 
            { 
                TextBox t = new TextBox(); 
                t.ID = "text" + i.ToString(); 
                Label l = new Label(); 
                l.ID = "lab" + i; 
                int k = i + 1; 
                l.Text = " <" + k.ToString() + ">"; 
                this.addpanel.Controls.Add(l); 
                this.addpanel.Controls.Add(t); 


            } 


放在Pagd_load,不要加!IsPostBack --------------------编程问答-------------------- 参考我的Blog:
http://blog.csdn.net/youbl/archive/2009/06/04/4241465.aspx --------------------编程问答--------------------
引用 1 楼 criedshy 的回复:
C# codefor (int i=0; i< num; i++) 
            { 
                TextBox t=new TextBox(); 
                t.ID="text"+ i.ToString(); 
                Label l=new Label(); 
                l.ID="lab"+ i;int k= i+1; 
                l.Text=" <"+ k.ToString()+">";this.addpanel.Controls.Add(l);this.addpanel.Controls.Add(t); 


            }

放在Pagd_load,不要加!IsPostBack

正解,顶一个 --------------------编程问答-------------------- 任何一个会引发页面postback的事件都会导致自动生成的text值为空,把值存起来是一个方法,可以用ViewState(来自别人的想法,解决了跟你一样的方法) --------------------编程问答-------------------- 动态创建的控件,在回发后自动清空。

放在Pagd_load中创建控件,不要加!IsPostBack 
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,