Установка значения по умолчанию для DataGridViewComboBoxCell - PullRequest
2 голосов
/ 01 марта 2010

По умолчанию в поле со списком отображается пустое поле, даже если поле со списком заполнено несколькими значениями

ColumnSpeed.DataSource = speedList;
ColumnSpeed.ValueType = typeof(string);

Я также попробовал следующее, но он по-прежнему отображает пустой текст.

foreach (DataGridViewRow row in myDataGridView.Rows)
{
    DataGridViewComboBoxCell cell = row.Cells[ColumnSpeed.Index] as DataGridViewComboBoxCell;
    if (cell != null)
    {
        cell.DataSource = speedList;
        cell.Value = cell.Items[0].ToString();
    }   
}

Ответы [ 3 ]

0 голосов
/ 11 января 2011

Я считаю, что код, который вы написали, должен работать ... просто хочу знать, куда вы звоните так же. Это должно работать, если вы вызываете его в событии databinding_complete сетки

0 голосов
/ 05 сентября 2013

Как только вы установите все источники данных, попробуйте вызвать метод DataGridView.Refresh (). Обычно это требуется для отображения изменений в источниках данных.

0 голосов
/ 31 июля 2010

Возможно, ValueMember, назначенный вашему DataGridView, отличается от DisplayMember, назначенного вами. Если это так, вы получите пустое значение, плюс вы получите срабатывание DataGridError.

Вы должны попробовать:

foreach (DataGridViewRow row in dgMain.Rows){
DataGridViewComboBoxCell pkgBoxCell = row.Cells[ColumnSpeed.Index]

pkgBoxCell.Value = ((Package) pkgBoxCell.Items(0)).Id

}

Я преобразовал это из vb.net, поэтому он может не скомпилироваться. Вместо строки, в которой я устанавливаю значение, делайте все необходимые шаги, чтобы получить и установить правильное значение ValueMember. В моем примере я приведу элемент к определенному типу и использую его идентификатор.

...