页面上的C#ASP.NET checkboxlist从数据库加载检查项目

时间:2016-07-27 20:13:28

标签: c# asp.net sql-server checkboxlist selecteditem

我正在使用asp.net中的checkboxlist,我想做的是下一步:对于选定的用户从数据库中获取他的角色(假设角色先前被选中并存储到数据库中,这没关系!)现在我只是想要从数据库中填充具有所选角色的复选框列表(在上一步中)。

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

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:

  

无法转换为&#39; System.Web.UI.WebControls.ListItem&#39;至   &#39; MYPROJECT.Data.Roles&#39;

错误号码2:

  

最佳重载方法匹配   &#39; System.Collections.Generic.List.Contains(MYPROJECT.Data.Roles)&#39;   有一些无效的论点

我的角色课

`public partial class Roles     {         公共角色()         {             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; }
}`

谢谢你们,

干杯!

1 个答案:

答案 0 :(得分:1)

你需要像Text一样调用checkboxRoles.Items[i].Text属性,然后再进行比较,你必须将它与string对象的Role属性进行比较,这个属性不能说确保除非您发布Roles

的代码

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

var roleNames = igrac.Roles.Select(r => r.Name);

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