我有一個表格單元格,我在運行時用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