2016-09-27 2 views
0

WinformsDataGridView을 사용하여 사용자 정보와 권한을 표시하고 있습니다. 동일한 격자를 사용하여 역할을 업데이트 할 수 있기 때문에 은 DataGridViewComboBoxColumn이고 valueMember 및 DataSource 속성은 설정됩니다.Winforms ComboBoxColumn 값이 유효하지 않습니다.

DataGridViewComboBoxColumn의 DataSource에서 Context.Role을 설정했습니다.

DataGridView의 DataSource에서 조인을 사용하여 쿼리를 설정했습니다.

데이터가 제대로 표시되지만 콤보가 작동하지 않습니다. 오류가 발생합니다.

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 데이터 소스를 설정하기 전에 언 바운드 comboboxColumn을 추가하고 이름을 지정한 다음 datasource를 설정 한 다음 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(); 
관련 문제