asp.net中根据xml动态创建使用web组件
(二)
作者:厉铁帅
三、动态创建web组件。
先来看程序实例:
private void createconfigtable(int totalnum,int[] sequenceint,string[] namestr,string[] ipstr)
{
//根据得到测量点的总数,动态生成输入框
for(int i=1;i<=totalnum;i++)
{
//创建表格
htmltable showtable = new htmltable();
showtable.border=0;
showtable.id="showtable"+i.tostring();
showtable.bordercolor="#000000";
showtable.cellpadding=4;
showtable.cellspacing=4;
showtable.align="center";
myplaceholder.controls.add(showtable);
//创建一行
htmltablerow trow = new htmltablerow();
showtable.rows.add(trow);
//创建第一列(序号)
htmltablecell tcell = new htmltablecell();
label sequencelabel = new label();
sequencelabel.id="sequencelabel"+i.tostring();
sequencelabel.text="序号:";
sequencelabel.enabled=true;
tcell.controls.add(sequencelabel);
trow.cells.add(tcell);
//创建第二列
tcell = new htmltablecell();
sequencedatatb = new textbox();
sequencedatatb.id="sequencedatatb"+i.tostring();
sequencedatatb.text=i.tostring();
sequencedatatb.width=30;
sequencedatatb.text=sequenceint[i].tostring();
sequencedatatb.readonly=false;
//创建第三列(名称)
tcell = new htmltablecell();
label namelabel = new label();
namelabel.id="namelabel"+i.tostring();
namelabel.text="名称:";
namelabel.enabled=true;
tcell.controls.add(namelabel);
trow.cells.add(tcell);
//创建第四列
tcell = new htmltablecell();
nametb=new textbox();
nametb.id="nametb"+i.tostring();
nametb.width=120;
nametb.text=namestr[i];
nametb.maxlength=50;
tcell.controls.add(nametb);
trow.cells.add(tcell);
//创建第五列(ip)
tcell = new htmltablecell();
label iplabel = new label();
iplabel.id="iplabel"+i.tostring();
iplabel.text="ip:";
iplabel.enabled=true;
tcell.controls.add(iplabel);
trow.cells.add(tcell);
//创建第六列
tcell = new htmltablecell();
iptb=new textbox();
iptb.id="iptb"+i.tostring();
iptb.width=120;
iptb.text=ipstr[i];
iptb.maxlength=15;
tcell.controls.add(iptb);
trow.cells.add(tcell);
}
}
tcell.controls.add(sequencedatatb);
trow.cells.add(tcell);
… …
//创建第五列(ip)
tcell = new htmltablecell();
label iplabel = new label();
iplabel.id="iplabel"+i.tostring();
iplabel.text="ip:";
iplabel.enabled=true;
tcell.controls.add(iplabel);
trow.cells.add(tcell);
//创建第六列
tcell = new htmltablecell();
iptb=new textbox();
iptb.id="iptb"+i.tostring();
iptb.width=120;
iptb.text=ipstr[i];
iptb.maxlength=15;
tcell.controls.add(iptb);
trow.cells.add(tcell);
}
}
程序中的myplaceholder 是 system.web.ui.webcontrols.placeholder 组件,使用该组件的html语法如下:
… …
<tr>
<td>
<asp:placeholder id="myplaceholder" runat="server"></asp:placeholder>
</td>
</tr>
… …
使用该组件的目的是为了定位动态创建的表格。该组件在页面上的位置即为动态创建的表格的位置。
程序中另外一个要说明的地方是动态创建的组件的id的设定。组件的id的设定要注意两点:
1、id号不能重复
2、要便于在程序中使用。因为要在程序中使用动态创建的组件,要通过该组件的id来查找。(关于这一点,在“使用动态创建的web组件”部分会有较为详细的介绍)