ASP.NET复选框列表数据绑定问题
是否可以对ASP.NET复选框列表进行数据绑定,以便数据中的字符串值成为复选框的标签,布尔值选中/取消选中复选框 在我的asp.net网络表单上,我有一个如下的复选框列表:ASP.NET复选框列表数据绑定问题,asp.net,web-controls,Asp.net,Web Controls,是否可以对ASP.NET复选框列表进行数据绑定,以便数据中的字符串值成为复选框的标签,布尔值选中/取消选中复选框 在我的asp.net网络表单上,我有一个如下的复选框列表: <asp:CheckBoxList runat="server" ID="chkListRoles" DataTextField="UserName" DataValueField="InRole" /> 在代码背后,我有以下代码: var usersInRole = new List<UserInR
<asp:CheckBoxList runat="server" ID="chkListRoles" DataTextField="UserName" DataValueField="InRole" />
在代码背后,我有以下代码:
var usersInRole = new List<UserInRole>
{
new UserInRole { UserName = "Frank", InRole = false},
new UserInRole{UserName = "Linda", InRole = true},
new UserInRole{UserName = "James", InRole = true},
};
chkListRoles.DataSource = usersInRole;
chkListRoles.DataBind();
var usersInRole=新列表
{
新UserInRole{UserName=“Frank”,InRole=false},
新UserInRole{UserName=“Linda”,InRole=true},
新UserInRole{UserName=“James”,InRole=true},
};
chkListRoles.DataSource=usersInRole;
chkListRoles.DataBind();
我有点希望在InRole=true时选中复选框。我还尝试了InRole=“Checked”。结果是一样的。我似乎找不到一种方法来进行数据绑定并自动选中/取消选中复选框
目前,我通过为数据绑定事件中的相应项设置selected=true来解决这个问题。似乎有一个更干净的解决方案我抓不住
谢谢我认为您必须告诉控件要将其绑定到哪个属性……在本例中为“InRole”
我玩过它,似乎没有办法绑定到复选框的选择,你必须自己做。我能够绑定到清单的文本和值,这些文本和值似乎只处理列表中每个复选框的标签。编辑:无法通过标记完成此操作。DataValueField不确定复选框项是否为check。它检索或存储要在回发中使用的值。在复选框列表、RadioButtonList、ListControl等中很常见 这是预先选择复选框的唯一方法,因为您已经发现了这一点
chkListRoles.DataSource = usersInRole;
chkListRoles.DataBind();
foreach(ListItem item in chkListRoles.Items)
item.Selected = usersInRole.Find(u => u.UserName == item.Text).InRole;
在厌倦了
OnItemDataBound
-绑定之后,我为此创建了一个自定义控件。
它将允许您绑定所选的属性。通过更改自定义控件的来源,您可以轻松地为RadioButtonList
创建相同的控件
要使用它,只需在标记中创建控件时添加DataCheckedField
属性即可。请记住在web.config文件中引用自定义控件
标记
<myControls:SimpleCheckBoxList runat="server" ID="chkListRoles"
DataCheckedField="InRole"
DataTextField="UserName"
DataValueField="UserId" />
使用标记是不可能的。您可以做的是像您希望的那样绑定复选框列表-使用DataValueField中的bool,然后简单地将其添加为OnDataBound事件
protected void myCheckBoxList_DataBound(object sender, EventArgs e)
{
foreach (ListItem item in myCheckBoxList.Items)
{
item.Selected = bool.Parse(item.Value);
}
}
此解决方案与Jose Basilio提出的解决方案的区别在于,此解决方案适用于所有类型的数据绑定方法。例如,使用v4.5中的新ModelBinding功能使用SelectMethod进行绑定。在*.aspx文件中,我使用属性DataValueField=“InRole”声明复选框列表。这就是你的意思吗?这就是我所说的…我没有滚动查看你在UI代码中设置的值…对不起。事实是,该值通常用于进行任何进一步的处理。谢谢Jose,你的回答澄清了情况。在ASP.NET中似乎有一个奇怪的遗漏。为什么它们没有DataCheckedField属性呢?看起来很有趣,但是dataSelectedField
显示错误。有什么建议吗?@MAW74656尝试将其替换为dataCheckedField
。看起来像是三年前的打字错误。请对您的结果给予反馈!这救了我6年多以后。这对于在我的项目中加载自定义标记也很有帮助:是的,这个解决方案适用于.NETV4.5,而上一个解决方案不适用。
protected void myCheckBoxList_DataBound(object sender, EventArgs e)
{
foreach (ListItem item in myCheckBoxList.Items)
{
item.Selected = bool.Parse(item.Value);
}
}