我有一个Datagridview来绑定数据库中的数据。
DataGridViewTextBoxColumn colOperationID = new DataGridViewTextBoxColumn();
colOperationID.Name = "OperationID";
colOperationID.DataPropertyName = "OperationID";
BOMOperations.Columns.Add(colOperationID);
DataGridViewComboBoxColumn colOperationDesc = new DataGridViewComboBoxColumn();
colOperationDesc.Name = "OperationDesc";
colOperationDesc.DataSource = srcDT;
colOperationDesc.DisplayMember = "OperationDesc";
colOperationDesc.ValueMember = "OperationID";
colOperationDesc.DataPropertyName = "OperationDesc";
colOperationDesc.DisplayStyle = DataGridViewComboBoxDisplayStyle.ComboBox;
colOperationDesc.DefaultCellStyle.BackColor = Color.White;
colOperationDesc.DisplayStyleForCurrentCellOnly = true;
BOMOperations.Columns.Add(colOperationDesc);
然后用户将单击编辑按钮,datagridview将变为可编辑。我的问题是当我点击datagridviewcombobox列然后我将选择一个项目时,该项目将正确显示(DisplayMember),但只要单元格失去焦点,组合框的单元格就会显示ValueMember。
我已经尝试过我在这里检查数据类型的解决方案,但我的是正确的。 DisplayValue是一个字符串,而DisplayValue是一个int。
我还尝试将以下行colOperationDesc.DataPropertyName = "OperationDesc";
更改为colOperationDesc.DataPropertyName = "OperationID";
,它给了我这个例外。 exception
答案 0 :(得分:1)
colOperationDesc.DataPropertyName
应该是DataGridView.DataSource
中列的名称,并且应“引用”与colOperationDesc.ValueMember
中相同的值。
请注意,colOperationDesc.ValueMember
和colOperationDesc.DisplayMember
应该是colOperationDesc.DataSource
来自srcDT
变量的DisplayMember
的属性/列名称。
但只要细胞失去焦点,组合框的细胞就会显示出来 ValueMember
这是因为从srcDT
变量找不到列/属性“OperationDesc”(grid
)。
答案 1 :(得分:0)
您可以将DataPropertyName
设置为OperationID
。
colOperationDesc.DataPropertyName = "OperationID";