我正在创建一个管理页面,其中将动态创建checkboxlist(来自DB的用户列表)并检索其已检查的用户值。
有不同类型的用户,因此可以分组进行区分。
现在首先定义一个面板,动态创建复选框列表并放置在面板内,然后将面板放在占位符内。
我在这里做的是将复选框列表放在面板中,然后放置占位符内的面板。因此,不会检索Checkboxlist的值,因为它没有得到复选框列表,并且它不会循环通过Checkboxlist。
我所做的是。
private void AddControl(string pUserGrp, int pUserGrp_Id, int pName)
{
CheckBoxList chkList = new CheckBoxList();
CheckBox chk = new CheckBox();
User us = new User();
us.OrderBy = "Order By User_Name";
us.WhereClause = "Where UserRole_Id = " + pUserGrp_Id ;
chkList.ID = "ChkUser" + pName ;
chkList.AutoPostBack = true;
chkList.Attributes.Add("onClick", "getVal(ChkUser" + pName + ");");
chkList.RepeatColumns = 6;
chkList.DataSource = us.GetUserDS();
chkList.DataTextField = "User_Name";
chkList.DataValueField = "User_Id";
chkList.DataBind();
chkList.Attributes.Add("onClick", "getVal(this);");
Panel pUser = new Panel();
if (pUserGrp != "")
{
pUser.GroupingText = pUserGrp ;
chk.Text = pUserGrp;
}
else
{
pUser.GroupingText = "Non Assigned Group";
chk.Text = "Non Assigned group";
}
pUser.Controls.Add(chk);
pUser.Controls.Add(chkList);
Place.Controls.Add(pUser);
}
private void setChecked(int pPageGroupId)
{
ArrayList arr = new ArrayList();
PageMaster obj = new PageMaster();
obj.WhereClause = " Where PageGroup_Id = " + pPageGroupId;
arr = obj.GetPageGroupUserRights(null);
CheckBoxList chkList = (CheckBoxList)Place.FindControl("ChkUser");
if (chkList != null)
{
for (int i = 0; i < chkList.Items.Count; i++)
{
if (arr.Count > 0)
{
int ii = 0;
while (ii < arr.Count)
{
PageMaster oCand = (PageMaster)arr[ii];
if (oCand.User_Name == chkList.Items[i].Text)
{
if (!chkList.Items[i].Selected)
{
chkList.Items[i].Selected = true;
}
}
ii++;
oCand = null;
}
}
}
}
}
public string GetListCheckBoxText()
{
StringBuilder sbtext = new StringBuilder();
foreach (Control c in Place.Controls)
{
if (c.GetType().Name == "CheckBoxList")
{
CheckBoxList cbx1 = (CheckBoxList)c;
foreach (ListItem li in cbx1.Items)
{
if (li.Selected == true)
{
sbtext.Append(",");
sbtext.Append(li.Value);
}
else
{
sbtext.Append(li.Value);
}
}
}
}
return sbtext.ToString(); }
它没有通过setChecked()中的Checkboxlist控件,也没有遍历GetListCheckBoxTest()。
任何人都可以帮助我。
此致
答案 0 :(得分:0)
问题是您试图在不设置setChecked
属性的情况下找到控件(在Name
中)。你正在使用这个:
CheckBoxList chkList = (CheckBoxList)Place.FindControl("ChkUser");
但AddControl
中的这个位置是什么?
chkList.Name = "ChkUser";
而在GetListCheckBoxText
而不是......
if (c.GetType().Name == "CheckBoxList")
...使用此:
if (c.GetType()== typeof(CheckBoxList))