C# ASP.NET 页面上的复选框列表从数据库加载检查项目

C# ASP.NET checkboxlist on page load check items from database

我正在 asp.net 中使用复选框列表,接下来我想做的是:对于选定的用户,从数据库中获取他的角色(假设角色之前已选择并存储到数据库中,没关系!)现在我只想用数据库中的选定角色(在上一步中)填充该复选框列表..

但不幸的是,我无法按照我想象的方式做到这一点,这是我的代码:

if (!IsPostBack)
{
    int playerID = Convert.ToInt32(Request.QueryString["player"]);
    var player = DAPlayers.GetByIgracId(playerID);

    if (player != null)
    {
        checkboxRoles.DataSource=DAPlayers.GetAllRoles();
        checkboxRoles.DataTextField = "Name";


        player.Roles =DAPlayers.GetAllRolesByPlayer(player.playerID);

        for (int i = 0; i < checkboxRoles.Items.Count; i++)
        {
            if(player.Roles.Contains(checkboxRoles.Items[i])) //HERE I GOT THE ERROR 
                checkboxRoles.Items[i].Selected = true;
        }
    }
}

错误编号 1:

cannot convert from 'System.Web.UI.WebControls.ListItem' to 'MYPROJECT.Data.Roles'

错误编号 2:

The best overloaded method match for 'System.Collections.Generic.List.Contains(MYPROJECT.Data.Roles)' has some invalid arguments

我的角色class

`public 部分 class 角色 { public 角色() { this.UserRoles = new HashSet(); }

    public int RoleID { get; set; }
    public string Name { get; set; }
    public string Desc { get; set; }

    public virtual ICollection<UserRoles> UserRoles { get; set; }
}`

谢谢大家,

干杯!

您需要像 checkboxRoles.Items[i].Text 一样调用 Text 属性 并且在比较时再次将其与 string 属性 进行比较 Role 对象不能确定,除非你 post Roles class

的代码

根据您的评论:在这种情况下,获取 Names 列表并与

列表进行比较
var roleNames = igrac.Roles.Select(r => r.Name);

 if(roleNames.Contains(checkboxRoles.Items[i].Text)) 
   checkboxRoles.Items[i].Selected = true;