2016-10-20 33 views
0

私は過去4時間DataGridViewComboBoxCellの値を設定しようとしていましたが、私はどこにもいませんでした。私が見た最も一般的な解決策は、DataGridViewComboBoxCellの.Valueメンバーを、私が試したアイテムの1つに設定することでした。値が無効であると訴えました。 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]; 

メッセージボックスが起動した後は、私は、オブジェクトの.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]; 

これはItemsDataRowViewsしていることを前提としてValueMemberは、最初のフィールドであること。

あなたは中間ステップを書くことでタイプをテストすることができます。

var item = cell.Items[0]; 

そして、結果の型を調べるためにデバッガを使用..

関連する問題