62,046
社区成员
发帖
与我相关
我的任务
分享
//生成表
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);
}
}
//是这个添加值方式的原因
comboBox.Items.Add(item);
//改成下面代码就好了
comboBox.AddItem(item.Text, item.Value);
AddItem是一个自定义方法,里面的代码很简单,就是先new ListItem,将Text和Value放入这个新New的对象里,然后将它再添加到控件中。
也就是说这两种赋值的方式就是差了一个New。foreach (ListItem item in lstItem)
{
comboBox.Items.Add(item);
}
这个是楼主的filed系列控件,他的items集合都是用的lstItem,所以楼主该其中的一个值的话,lstitem会跟着改变的,应为是按引用传递的
comboBox2.ID = "Sort" + i;
//给下拉列表控件添加选项
comboBox2.AddItem("选项1","1");
comboBox2.AddItem("选项2","2");
这个是硬编码的,相互之间没有影响的
对的话分都给我啊。