2016-07-27 11 views
0

Я работаю с checkboxlist в asp.net, и я хочу сделать следующее: для выбранного пользователя получить его роли из базы данных (позволяет сказать, что роли ранее выбраны и сохранены к базе данных, и это нормально!), и теперь я просто хочу заполнить этот checkboxlist выбранными ролями (на предыдущем шаге) из базы данных.C# 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:

не может конвертировать из 'System.Web.UI.WebControls.ListItem' в 'MYPROJECT.Data.Roles'

ОШИБКА НОМЕР 2:

Лучший перегруженный метод матча для ' System.Collections.Generic.List.Contains (MYPROJECT.Data.Roles)» имеет некоторые недопустимые аргументы

Мой класс Роль

`общественного частичного класс Роль { общественные роли() { this.UserRoles = новый HashSet(); }

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

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

Спасибо, ребята,

Ура!

ответ

1

Вы должны вызвать Text свойство как checkboxRoles.Items[i].Text и снова при сравнении вы будете сравнивать его с string свойством Role объекта, который не может сказать наверняка, если вы не разместить код для Roles класса

Per ваш комментарий: в этом случае получить Names список и сравнить с тем, как

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

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

сообщения редактируется в настоящее время –

+0

@ billy_56 см редактирования в ответе, если это помогает. – Rahul

+0

да, похоже, что это работает. Я испытаю это немного больше сейчас! Так вы можете объяснить мне немного этой строки кода: 'var roleNames = igrac.Roles.Select (r => r.Name);' –

 Смежные вопросы

  • Нет связанных вопросов^_^