【急】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);
}
}
[解决办法]
什么叫改其中的一个值,另外两个也变?
怎么改,怎么变?
我估计就是你代码写得有问题
[解决办法]
调试一下赋值的地方不就清楚了
[解决办法]
汗,代码好乱,说一下我看到的问题啊
foreach (ListItem item in lstItem)
{
comboBox.Items.Add(item);
}
comboBox2.ID = "Sort" + i;
//给下拉列表控件添加选项
comboBox2.AddItem("选项1","1");
comboBox2.AddItem("选项2","2");