我有一个表格单元格,我在运行时用CheckBoxes和Labels填充。循环遍历表中的所有复选框
List<string> lstUserPool = new List<string>();
DataTable dt = GetData("SELECT UserName FROM eData ORDER BY UserName;", "Data Source = lewcomp1\\COMPLIANCE; Initial Catalog = ComplianceData; Integrated Security = True;");
for (int i = 1; i < dt.Rows.Count; i++)
{
CheckBox cb = new CheckBox();
cb.ID = "cb" + dt.Rows[i]["Username"].ToString();
Label lbl = new Label();
lbl.ID = "lbl" + dt.Rows[i]["Username"].ToString();
lbl.Text = dt.Rows[i]["Username"].ToString();
lbl.Font.Size = new FontUnit("18px");
if (IsOdd(i))
{
cellUsersPoolLeft.Controls.Add(cb);
cellUsersPoolLeft.Controls.Add(lbl);
cellUsersPoolLeft.Controls.Add(new LiteralControl("<br/>"));
}
if (IsEven(i))
{
cellUsersPoolRight.Controls.Add(cb);
cellUsersPoolRight.Controls.Add(lbl);
cellUsersPoolRight.Controls.Add(new LiteralControl("<br/>"));
}
}
后来,我想通过这些复选框来检查什么是Checked,什么不是。我尝试过在SO上发现的各种例子,但没有运气。这几乎就好像复选框不在我添加到的TableCell中。两个下面的循环都没有找到任何复选框控件:
foreach (Control ctl in cellUsersPoolRight.Controls)
{
if (ctl is CheckBox)
{
}
}
//foreach(var checkBox in cellUsersPoolRight.Controls.OfType<CheckBox>())
//{
// if (checkBox.Checked)
// {
// naz.Add(checkBox.ID);
// }
//}
我非常喜欢这种方法,第一次使用中继器。谢谢!你知道我如何改变ItemTemplate以允许两列数据而不是1? –
这是非常强大的,我用了它几次后,我去控制列表。这是复选框列表的完美选择。我有一些很棒的javascript,我用它来检查它们全部或者用jquery取消它们全部。这也是相当有用的功能。 – Enkode
它已经有2列。看1列/ TD是复选框,1列/ TD是用户名。如果您想添加更多,只需添加td标记和附加数据即可。 – Enkode