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;
}
}
}

解决方案 »

  1.   

    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;
    ............
      

  2.   

    又丑又长的代码....tb[X] 的类型是TextBox,怎么可能赋值一个string,真晕.
    楼主为什么要改变控件的ID? 为什么简单的不做?另外你说的是改控件的ID,而你的代码看来你要改的不是控件的ID而是变量名.....请楼主准确再次表达一下你到底最终需要的是什么????
    如果是要在循环里面去读取一批分别叫 DD1,DD2,DD3....的不确定控件,可以用父控件.FindControl("DD"+ i.ToString()) 得到;
    如果是要在循环内遍历一批确定的控件 DD1,DD2,DD3.... 则直接把它们赋值给数组就行了如果都不是,你最好重新表达你的要求.
      

  3.   

    另外你确认TextBox DD1 = (TextBox)DDJD.Rows[j].Cells[j].Controls[0]; ????最后一个你确认是 0不是1 ???? 要知道在一个HtmlTable的单元格内,空格也算是一个Control...除非你的  <td><input ...>  贴着,否则 <td>  <input ..> 或者换行,都算第1个控件是空格,第2个才是你的TextBox~~~~~~~ 所以用这种方式找控件比较危险~~~~~