2015-06-17 3 views
2

Я знаю, что это может быть дубликат, но я не смог найти решение, которое работает. У меня есть datagridview, у которого есть столбец со списком. Когда я не пытаюсь установить значение столбца со списком, все нормально (т. Е. Заполняется столбец со списком). Когда я пытаюсь установить значение, я получаю позорное значение «DataGridViewComboBoxCell значение недопустимо». Вот мой код:Значение DataGridViewComboBoxCell недопустимо # 2

//Retrieve Data 
System.Data.DataRowCollection DR1 = GetData(constants.SQL_1); 
System.Data.DataRowCollection DR2 = GetData(constants.SQL_2); 

//Populate list for combo box column 
List<string> list2 = new List<string>(); 
foreach (System.Data.DataRow DR in DR2) 
    list2 .Add(DR["fieldname"].ToString().Trim()); 

//Set datasource of combo box column 
DataGridViewComboBoxColumn cmb = (DataGridViewComboBoxColumn)dgv.Columns["comboboxcolumnname"]; 
cmb.ValueType = typeof(string); 
cmb.DataSource = list2 ; 

//Populate Data Grid View 
foreach (System.Data.DataRow DR in DR1) 
{ 

    DataGridViewComboBoxCell cell = new DataGridViewComboBoxCell(); 
    cell.Value = DR["fieldname"].ToString(); 

    DataGridViewRow row = new DataGridViewRow(); 

    row.Cells.Add(cell); 
    dgv.Rows.Add(row); 

} 

Как установить значение поля со списком?

+2

Я не понимаю, почему Microsoft сделала это так сложно! – RickInWestPalmBeach

ответ

0

В этом Post было предложено не устанавливать свойство datasource столбца combobox вообще. Итак, вот что я сделал:

System.Data.DataRowCollection DRC1 = dictionaries.GetData(constants.SQL_1); 
System.Data.DataRowCollection DRC2 = dictionaries.GetData(constants.SQL_2); 

foreach (System.Data.DataRow DR1 in DRC1) 
{ 
    DataGridViewComboBoxCell cmb = (DataGridViewComboBoxCell)dgv[0, dgv.Rows.Count - 1]; 

    foreach (System.Data.DataRow DR2 in DRC2) 
    { 
     cmb.Items.Add(DRC2["fieldname2"].ToString().Trim()); 
    } 

    cmb.Value = DRC1["fieldname1"].ToString(); 
} 
Смежные вопросы