日期:2014-05-17  浏览次数:20506 次

【急】foreach给页面List控件赋值,怎么使它的值不覆盖别的List控件
页面上一共有6个下拉列表控件,是cs动态生成的,控件和控件之间没有做任何关联。
之后再给这些控件赋值的时候却出了问题。
在代码中给Field1、Field2、Field3赋的值不同,但是赋值的时候,明明只改其中一个的值,另外两个控件的值也会跟着被改变。
同样给Sort1、Sort2、Sort3赋值却没有问题,这是为什么呢?

生成控件的代码:

//生成表
TableRow tableRow = new TableRow();
for (int i = 1; i < 4; i++)
{
   //生成行
   TableRow tableRow = new TableRow();
   //cell
   TableCell cellBody = new TableCell();
   //生成第一个下拉列表控件
   ListControlBase comboBox = (ListControlBase)ListControlBase.Create(Page, "ComboBoxControl");
   //给下拉列表控件添加选项(lstItem是在for外面定义的一个ListItemCollection变量)
   foreach (ListItem item in lstItem)
   {
       comboBox.Items.Add(item);
   }
   Control control = (Control)comboBox;
   control.ID = "Field" + i;
   //将控件放到cell中
   AddControl(control);
   cellBody.Controls.Add(control);
   
   //第二个下拉列表控件
   ListControlBase comboBox2 = (ListControlBase)ListControlBase.Create(Page, "ComboBoxControl");
   comboBox2.ID = "Sort" + i;
   //给下拉列表控件添加选项
   comboBox2.AddItem("选项1","1");
   comboBox2.AddItem("选项2","2");
   //将控件放到cell中
   AddControl(control2);
   cellBody.Controls.Add(control2);
   tableRow.Cells.Add(control2);
   table.Rows.Add(tableRow);
}


给控件赋值的代码:

//RecordSet是取到的值
foreach (Record record in RecordSet)
{
   //取出来的值会是1或2或3
   string order = record.GetString(tableName.Order);
   string id = "Field" + order;
   //controls是所有控件的集合
   if (controls.ContainsKey(id))
   {
      ((ListControlBase)controls[id]).Value = record.GetString(tableName.FieldValue);
   }
   id = "Sort" + displayOrder;
   if (controls.ContainsKey(id))
   {
      ((ListControlBase)controls[id]).Value = record.GetString(tableName.SortValue);
   }
}