问题描述
我是这样做的:System.Web.UI.WebControls.Tabletb=newSystem.Web.UI.WebControls.Table();tb.BorderWidth=Unit.Parse("0");tb.Width=Unit.Parse("100%");//创建标题行TableRowstaticTitleRow=newTableRow();TextBoxbox2=newTextBox();box2.ID="tb_SingleMoneyCode"+i.ToString();TableCellcell2=newTableCell();cell2.Width=Unit.Parse("23%");cell2.Controls.Add(box2);tr.Cells.Add(cell2);tb.Rows.Add(tr);panel1.Controls.Add(tb);在Button事件里这样获得TextBoxbox=(TextBox)this.panel1.FindControl("tb_SingleMoneyCode0");stringaa=box.Text;box对象总是为null我知道是由于页面的刷新,页面没有记录控件状态引起的,在网上查找了一下,写上下面的代码:publicboolIsDynamicLoadControl{get{objectdynamic=ViewState["IsDynamicLoadControl"];returndynamic==null?false:true;}set{ViewState["IsDynamicLoadControl"]=value;}}protectedoverridevoidLoadViewState(objectsavedState){base.LoadViewState(savedState);if(IsDynamicLoadControl){LoadPrizeTypeControls();//从新加载动态控件}}可是页面还是找不到动态加载的控件
解决方案
解决方案二:
mark
解决方案三:
这样动态添加的控件,通过FindControl是找不到的吧。。
解决方案四:
可能是你TextBoxbox=(TextBox)this.panel1.FindControl("tb_SingleMoneyCode0");这句的问题吧,我就改了这句就OK了,你试试...protectedvoidPage_Load(objectsender,EventArgse){System.Web.UI.WebControls.Tabletb=newSystem.Web.UI.WebControls.Table();tb.BorderWidth=Unit.Parse("0");tb.Width=Unit.Parse("100%");//创建标题行TableRowstaticTitleRow=newTableRow();TableRowtr=newTableRow();TextBoxbox2=newTextBox();box2.ID="ccc";box2.Text="ffffffffff";TableCellcell2=newTableCell();cell2.Width=Unit.Parse("23%");cell2.Controls.Add(box2);tr.Cells.Add(cell2);tb.Rows.Add(tr);Panel1.Controls.Add(tb);}protectedvoidButton2_Click(objectsender,EventArgse){TextBoxt=(TextBox)this.Panel1.FindControl("ccc");Response.Write(t.Text);}
解决方案五:
这个时候用Panel1.FindContronl()应该是找不到的,应该要通过table里的cell去找。
解决方案六:
小妹你好~
解决方案七:
用循环取控件
解决方案八:
((TextBox)this.pnlMacinfo.Controls[0].FindControl("id")).text;
解决方案九:
protectedoverridevoidOnInit(EventArgse){}在这个(初始化里创建控件)
解决方案十:
if(!IsPostBack){System.Web.UI.WebControls.Tabletb=newSystem.Web.UI.WebControls.Table();tb.BorderWidth=Unit.Parse("1");tb.Width=Unit.Parse("100%");//创建标题行TableRowstaticTitleRow=newTableRow();------------------代码都类似。我的显示了。。。。
解决方案十一:
protectedvoidGetControls(ControlCollectioncc){foreach(Controlcincc){if(cisSystem.Web.UI.WebControls.TextBox){TextBoxtb=(TextBox)c;if(tb.ID=="XXX"){//如果是这个控件..}elseif(c.HasControls()){GetControls(c.Controls);//递归获取控件}}}}GetControls(Page.Controls);//调用页面中所有的控件在页面中控件是分层次的