动态创建复选框列表
本文关键字:列表 复选框 创建 动态 | 更新日期: 2023-09-27 18:23:52
我正在尝试创建一个带有标题和一组复选框的动态菜单。所以输出应该是这样的:(伪代码)
标题1
-checkbox1-checkbox2-checkbox3
标题2
-checkbox1-checkbox2-checkbox3
我可以很好地取回标题,但我的复选框不行。(见下文)
护理
System.Web.UI.WebControls.CheckBoxList
企业&企业解决方案
System.Web.UI.WebControls.CheckBoxList
我意识到我正在返回一个数据集,我只是不知道如何处理它。
BusinessUnit bu = new BusinessUnit();
DataSet businessNames = bu.ListBusinessUnitNames();
ArrayList buNames = new ArrayList();
if (businessNames.Tables.Count > 0 && businessNames.Tables[0].Rows.Count > 0)
{
foreach (DataRow row in businessNames.Tables[0].Rows)
{
buNames.Add(row["BSUN_NAME"].ToString());
}
}
int counter = 1;
foreach (string name in buNames)
{
Label lblName = new Label();
lblName.ID = "unitName_" + counter;
lblName.Text = name;
CheckBoxList chkBoxes = new CheckBoxList();
chkBoxes.ID = name + "Programs_" + counter;
foreach (string item in buNames)
{
DataSet buPrograms = bu.ListBusinessUnitPrograms(item);
foreach (DataRow row in buPrograms.Tables[0].Rows)
{
chkBoxes.DataTextField = row[0].ToString();
chkBoxes.Text = chkBoxes.DataTextField;
}
}
programs.InnerHtml += lblName.Text + chkBoxes;
counter++;
}
以下是在代码中执行此操作的机制:
ListItem LI1 = new ListItem("aaa");
ListItem LI2 = new ListItem("bbb");
LI1.Selected = true;
LI2.Selected = false;
chkBoxes.Items.Add(LI1);
chkBoxes.Items.Add(LI2);
(假设您使用的是WebForms.aspx)
在您的代码示例中,语句programs.InnerHtml += lblName.Text + chkBoxes;
附加了chkBoxes对象的默认.ToString()实现的值。要将复选框实际添加到页面中,您需要在页面上使用某种容器控件(如占位符),并通过phPlaceholder.Controls.Add(chkBoxes)
将动态创建的控件附加到容器的Controls集合