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;
我正在 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;