2016-10-20 3 views
0

Я пытаюсь установить значение отдельного DataGridViewComboBoxCell в течение последних 4 часов, и я никуда не уходил. Наиболее распространенное решение, которое я видел, это установить член .Value DataGridViewComboBoxCell на один из элементов, который я попробовал, и он жаловался, что это значение недействительно.DataGridViewComboBoxCell Значение не установлено должным образом

DataTable documentTypes = _codedValues.GetCodedValues(Database.DOCUMENT_TYPE_TABLE);    documentTypes.Columns[Database.PROFESSION_ID_COLUMN].AllowDBNull = true; 
documentTypes.Columns[Database.CODE].AllowDBNull = true; 
this.cbxDocumentType.DisplayMember = Database.VALUE; 
this.cbxDocumentType.ValueMember = Database.CODE; 
this.cbxDocumentType.DataSource = documentTypes.DefaultView; 
int rowId = this.dgvDocumentList.Rows.Add(doc.actualName, doc.fileName); 
DataGridViewComboBoxCell obj = (DataGridViewComboBoxCell)this.dgvDocumentList.Rows[rowId].Cells[2]; 
obj.Value = obj.Items[0]; 

После окне сообщения появляется, что говорит мне DataGridViewComboBoxCell взгляд не действует, я вижу выход .ToString из объекта устанавливается, который System.Data.DataRowValue.

+0

ли вы решить свои проблемы? – TaW

ответ

0

В зависимости от вашего источника данных вы должны использовать правильные роли для доступа к правильным полям.

Попробуйте это:

DataGridViewComboBoxCell cell = 
         (DataGridViewComboBoxCell)this.dgvDocumentList.Rows[rowId].Cells[2]; 
cell.Value = ((DataRowView)cell.Items[0]).Row.ItemArray[0]; 

Это предполагает, что Items являются DataRowViews и что ValueMember находится в первом поле.

Вы можете проверить тип, написав промежуточный шаг:

var item = cell.Items[0]; 

и использовать отладчик, чтобы посмотреть в результирующий тип ..

Смежные вопросы