런타임시 DataGridview의 일부 열을 콤보 상자 열로 변경합니다. 이제 콤보 박스 항목의 기존 고유 값을 얻으려면 어떻게해야합니까? 엔티티 모델을 데이터 소스로 사용하고 있습니다. 내 코드 :C# 콤보 박스 항목에 datagridview 열의 고유 한 값 표시
dgvLoadTable.DataSource = null;
var context = new AdminEntities();
var TableName = cboSelectTable.Text.ToString();
var rawData = context.GetType().GetProperty(TableName)
.GetValue(context, null);
var truncatedData = ((IQueryable<object>)rawData).Take(0);
var source = new BindingSource { DataSource = truncatedData };
dgvLoadTable.DataSource = source;
dgvLoadTable.ReadOnly = false;
dgvLoadTable.AllowUserToAddRows = true;
for (int row= 0; row < dgvLoadTable.Rows.Count; row++
{
for (int col = 0; col < dgvLoadTable.Columns.Count; col++)
{
if (col == 2 || col == 4)
{
this.dgvLoadTable[col, row] = new DataGridViewComboBoxCell();
var item = dgvLoadTable.Rows.Cast<DataGridViewRow>()
.Where(r => r.Cells[0].Value != null)
.Select(r => r.Cells[col].Value)
.Distinct();
((DataGridViewComboBoxCell)dgvLoadTable[col,row]).Items
.AddRange(item
.ToArray());
dgvLoadTable[col, row].ValueType = typeof(var);
}
}
}
dgvLoadTable.Refresh();
하지만이 방법이 효과가 있습니까?
DataGridViewComboBoxCell 값이 유효하지 않은 예외를 throw합니다. – feather
음, 어떤 데이터 형식이 열에 ?? – TaW
예외가 수정되었지만 콤보 박스 항목에는 아무 것도 표시되지 않습니다. 데이터 유형이 고정되어 있지 않습니다. 열마다 다릅니다. – feather