ASP.NET CheckBoxList DataBinding问题

是否有可能DataBind一个ASP.NET CheckBoxList,使得数据中的字符串值成为复选框的标签,并且bool值检查/取消选中该框?

在我的asp.net webform上,我有一个像这样的CheckBoxList:

<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",};

chkListRoles.DataSource = usersInRole;
chkListRoles.DataBind();

我有点希望在InRole = true时检查复选框.我也试过InRole =“Checked”.结果是一样的.我似乎无法找到DataBind的方法,并自动选中/取消选中复选框.

目前,我通过为DataBound事件中的相应项设置selected = true来解决问题.似乎有一个更清晰的解决方案,超出我的掌握.

谢谢

解决方法

编辑:通过标记没有办法做到这一点. DataValueField不确定复选框项是否已检查.它检索或存储要在回发中使用的值. DataValueField在CheckBoxLists,RadioButtonLists,ListControl等中很常见.

这是预先选择复选框的唯一方法.

chkListRoles.DataSource = usersInRole;
chkListRoles.DataBind();

foreach(ListItem item in chkListRoles.Items)
 item.Selected = usersInRole.Find(u => u.UserName == item.Text).InRole;

相关文章

这篇文章主要讲解了“WPF如何实现带筛选功能的DataGrid”,文...
本篇内容介绍了“基于WPF如何实现3D画廊动画效果”的有关知识...
Some samples are below for ASP.Net web form controls:(fr...
问题描述: 对于未定义为 System.String 的列,唯一有效的值...
最近用到了CalendarExtender,结果不知道为什么发生了错位,...
ASP.NET 2.0 page lifecyle ASP.NET 2.0 event sequence cha...