VS 2013:Winforms datagridview的Combobox列有一个值列表,即Tag,Reset,Cancel等... Datagridview绑定到从SQL表填充的datatable。当组合框列遇到不在列表中的值时,它会出错。
1)如何在组合框发生之前获取用于填充组合框列的值?如果可以,我可以按照下面的答案建议将值添加到列表中。
答案 0 :(得分:0)
您应该使用null
代替空字符串。控件已经可以使用了。
尝试使用不属于组合单元格的值通常不是一个好主意。但如果你坚持这样做,你可以检查是否已经存在价值。如果不添加它,则设置值。
var comboColumn = ((DataGridViewComboBoxColumn)grid.Columns["combo_column"]);
if (!comboColumn.Items.Contains(value))
comboColumn.Items.Add(value);
答案 1 :(得分:0)
在datagridview上设置数据错误事件,然后捕获事件中的值,并按照上一个答案中的建议将它们设置在组合框列表项列表中。这些项目将显示在datagridview中,但不会永久存储在comboboxcolumn项目列表中。
private void dgvVX130DataErrors(object sender, DataGridViewDataErrorEventArgs e)
{
DataGridViewComboBoxColumn comboColumn;
switch (e.ColumnIndex)
{
case 4:
comboColumn = ((DataGridViewComboBoxColumn)dgvVX130.Columns["DataDomain"]);
if (!comboColumn.Items.Contains(dgvVX130.Rows[e.RowIndex].Cells[e.ColumnIndex].Value))
{
comboColumn.Items.Add(dgvVX130.Rows[e.RowIndex].Cells[e.ColumnIndex].Value);
}
break;