c#之如何保存动态复选框更改
不点
阅读:22
2024-10-01 17:34:08
评论:0
我有几个动态创建的复选框,并且会显示现有的选择,但是当用户进行更改时,我想将它们存储回去。这是动态生成和选择的代码
private void Role(string role)
{
SystemUserDal dal = new SystemUserDal();
var userId = Guid.Parse(Request.QueryString["ID"].ToString());
var roles = dal.GetRolesList(userId);
foreach (KeyValuePair<Guid, string> r in roles)
{
CheckBox chk = new CheckBox();
chk.ID = r.Value;
chk.Text = r.Value;
if (role.Contains(r.Value))
{
chk.Checked = true;
}
rolepanel.Controls.Add(chk);
}
}
我正在尝试以下操作
private void GetCheckBoxes()
{
foreach (Control ctrl in rolepanel.Controls)
{
CheckBox c = ctrl as CheckBox;
string id = c.ID;
string role = c.Text;
}
}
当我单步执行代码时,它会遇到计数为 3 的 foreach 循环,但 ctl 为空。有什么线索吗?
请您参考如下方法:
您收到错误的原因可能是 rolepanel.FiondControl("chk")
返回了 null
,因为它没有找到带有 ID="chk"的控件“
。方法 FindControl
接受一个字符串——您要查找的控件的 ID。您添加的复选框没有 ID="chk"
,它们都有来自您的代码的 ID=r.value
。我建议为 ID 提出一些架构,您稍后可以使用它来查找复选框。
如果您的rolepanel
只包含您动态添加的复选框,您可以只使用rolepanel.Controls
来获取所有这些复选框。
不要忘记将控件转换为 CheckBox
。
因此您的 GetCheckBoxes()
可能类似于:
private void GetCheckBoxes()
{
foreach (Control ctrl in rolepanel.Controls)
{
if (ctrl is CheckBox)
{
CheckBox c = ctrl as CheckBox;
string cText = c.Text;
// do what you need to do with cText, or checkbox c
}
}
}
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。