gpt4 book ai didi

c# - 如何保存动态复选框更改

转载 作者:行者123 更新时间:2023-12-01 10:54:32 25 4
gpt4 key购买 nike

我有几个动态创建的复选框,并且会显示现有的选择,但是当用户进行更改时,我想将它们存储回去。这是动态生成和选择的代码

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
}
}
}

关于c# - 如何保存动态复选框更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16090097/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com