日期:2014-05-20  浏览次数:20473 次

有关于在循环中,获得子控件的ID,并改变ID,不知道要怎么做?麻烦高手回答一下!
TextBox   DD1   =   (TextBox)DDJD.Rows[j].Cells[j].Controls[0];
以上这句话,是获得TextBox控件,但是我现在DD1的名字要可以改变的,因为这句话是在循环里获得的,如果DD1不能被改变,那就会出错,不知道有什么好办法,可以在获得控件的时候改边控件的ID  
这段就是具体代码,请大家研究一下  
HtmlTable[]   ht   =   {DDJD,FSJD,BHJD,TXJD,ZDHJD};
for(int   i=0;i <ht.Length;i++)
{
HtmlTable   Name   =   (HtmlTable)ht[i];
TextBox[]   tb   =   {};
for(int   j=1;j <Name.Rows.Count;j++)
{
string   OrgName   =   Name.ID.Substring(0,Name.ID.Length-2).Trim();
switch(OrgName)
{
case   "DD ":
{
if(i   ==   0)
{
tb[j]   =   "DD "+j;
}
break;
}
case   "FS ":
{
if(i   ==   1)
{
tb[j+i]   =   "FS "+j;
}
break;
}
case   "BH ":
{
if(i   ==   2)
{
tb[j+i]   =   "BH "+j;
}
break;
}
case   "TX ":
{
if(i   ==   3)
{
tb[j+i]   =   "TX "+j;
}
break;
}
default:
{
if(i   ==   4)
{
tb[j+i]   =   (TextBox) "ZDH "+j;
}
break;
}
}
}

------解决方案--------------------
HtmlTable[] ht = {DDJD,FSJD,BHJD,TXJD,ZDHJD};
TextBox tb = null;
for(int i=0;i <ht.Length;i++)
{
HtmlTable Name = (HtmlTable)ht[i];
for(int j=1;j <Name.Rows.Count;j++)
{
string OrgName = Name.ID.Substring(0,Name.ID.Length-2).Trim();
switch(OrgName)
{
case "DD ":
tb = (TextBox)Name.Rows[j].Cells[列号].Controls[0];
if(i == 0)
tb.ID = "DD "+j.ToString();
break;
............

------解决方案--------------------
又丑又长的代码....

tb[X] 的类型是TextBox,怎么可能赋值一个string,真晕.


楼主为什么要改变控件的ID? 为什么简单的不做?

另外你说的是改控件的ID,而你的代码看来你要改的不是控件的ID而是变量名.....请楼主准确再次表达一下你到底最终需要的是什么????


如果是要在循环里面去读取一批分别叫 DD1,DD2,DD3....的不确定控件,可以用

父控件.FindControl( "DD "+ i.ToString()) 得到;
如果是要在循环内遍历一批确定的控件 DD1,DD2,DD3.... 则直接把它们赋值给数组就行了

如果都不是,你最好重新表达你的要求.