2016-09-27 4 views
0

Я использую DataGridView в Winforms, чтобы отобразить информацию о пользователе и их роли. Поскольку я хотел бы использовать ту же сетку, чтобы иметь возможность ОБНОВЛЕНИЯ, я меняю последние DataGridViewTextBoxColumn на DataGridViewComboBoxColumn и задаю значенияMember и DataSource.Winforms ComboBox Значение столбца недействительно

В DataSource DataGridViewComboBoxColumn я установил Context.Role.

В DataSource DataGridView Я задал запрос с соединением.

Данные отображаются правильно, но Combo не работает. И я получаю ошибку

Значение datagridviewcomboboxcell недопустимо.

Это мой код:

var query = from u in context.User 
join ur in context.UserRole on u.ID equals r.UserID 
join r in context.Role on ur.RoleID.ToString() equals r.ID.ToString() 
select new 
{u.ID, 
u.Nick, 
u.LastLogin, 
Role = ur == null ? String.Empty : r.Name 
}; 

DataGridViewTextBoxColumn ColID = new DataGridViewTextBoxColumn(); 
DataGridViewTextBoxColumn ColNick = new DataGridViewTextBoxColumn(); 
DataGridViewTextBoxColumn ColLast = new DataGridViewTextBoxColumn(); 
DataGridViewComboBoxColumn ColRole = new DataGridViewComboBoxColumn(); 

userDataGridView.Columns.Add(ColID); 
userDataGridView.Columns.Add(ColNick); 
userDataGridView.Columns.Add(ColLast); 
userDataGridView.Columns.Add(ColRole); 

ColID.DataPropertyName = "ID"; 
ColNick.DataPropertyName = "Nick"; 
ColLast.DataPropertyName = "LastLogin"; 

ColRole.DataPropertyName = "Role"; 
ColRole.DataSource = context.Role.ToList(); 
ColRole.ValueMember = "ID"; 

userDataGridView.DataSource = query.ToList(); 

Любая идея о том, что я не хватает?

ответ

0

Прежде, чем вы установите источник данных gridview, добавьте unbound comboboxColumn, дайте ему имя, затем установите источник данных, затем установите источник данных datagridview.

var query = from u in context.User 
join ur in context.UserRole on u.ID equals r.UserID 
join r in context.Role on ur.RoleID.ToString() equals r.ID.ToString() 
select new 
{u.ID, 
u.Nick, 
u.LastLogin, 
Role = ur == null ? String.Empty : r.Name 
}; 

DataGridViewTextBoxColumn ColID = new DataGridViewTextBoxColumn(); 
DataGridViewTextBoxColumn ColNick = new DataGridViewTextBoxColumn(); 
DataGridViewTextBoxColumn ColLast = new DataGridViewTextBoxColumn(); 
DataGridViewComboBoxColumn ColRole = new DataGridViewComboBoxColumn(); 

ColID.DataPropertyName = "ID"; 
ColNick.DataPropertyName = "Nick"; 
ColLast.DataPropertyName = "LastLogin"; 

ColRole.DataPropertyName = "Role"; 
ColRole.DataSource = context.Role.ToList(); 
ColRole.ValueMember = "ID"; 

userDataGridView.Columns.Add(ColID); 
userDataGridView.Columns.Add(ColNick); 
userDataGridView.Columns.Add(ColLast); 
userDataGridView.Columns.Add(ColRole); 

userDataGridView.DataSource = query.ToList(); 
Смежные вопросы