Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET复选框列表数据绑定问题_Asp.net_Web Controls - Fatal编程技术网

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.NET复选框列表进行数据绑定,以便数据中的字符串值成为复选框的标签,布尔值选中/取消选中复选框

在我的asp.net网络表单上,我有一个如下的复选框列表:

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