动态创建的组件的ID设定要注意两点:
1、ID号不能重复
2、要便于在程序中使用。因为要在程序中使用动态创建的组件,要通过该组件的ID来查找。
//创建时:
Label lb = new Label();
lb.ID="lb"+i.ToString();
//使用时:
String lbID="lb"+i.ToString();
Label lb=(Label)myPlaceHolder.FindControl(lbID);
lb.Text="… …"
注意:
需要特别注意的是,使用动态创建的WEB组件有一个前提,就是页面不能被刷新。如果页面被刷新,而且你又没
有在页面刷新后重新创建该组件。在程序中使用动态创建的WEB组件,在程序运行时就会得到一个错误。该错误
的产生是因为动态创建的WEB组件在页面被刷新后就不存在了。
private void submitButton_Click(object sender, System.EventArgs e)
{
//… …
//将用户填写的信息写入数组
for(int i=1;i<=int.Parse(ViewState["totalnum"].ToString());i++)
{
//… …
string lbID="lb"+i.ToString();
string strID=Request.Form[lbID].ToString();
IDstr[i]=strID;
}
//… …
}
其中lbID为要使用的WEB组件的ID号。当页面刷新后,虽然动态创建的WEB组件不存在了,但是Request对象已经
将WEB组件的信息保存下来了,所以仍然可以获得信息。
如果你想在页面刷新后,仍然显示动态创建的WEB组件,那么你需要做的是在 Page_Load(object sender,
System.EventArgs e) 中再次调用创建WEB组件的函数,并用 Request.Form[ID] 为相应的组件赋修改过的值。
请记住,创建WEB组件的函数要放在 if(IsPostBack){ } 中。