设置一个空字符串'作为组合框项目

时间:2015-05-27 18:54:55

标签: c# winforms datagridcomboboxcolumn datagridviewcombobox

VS 2013:Winforms datagridview的Combobox列有一个值列表,即Tag,Reset,Cancel等... Datagridview绑定到从SQL表填充的datatable。当组合框列遇到不在列表中的值时,它会出错。

1)如何在组合框发生之前获取用于填充组合框列的值?如果可以,我可以按照下面的答案建议将值添加到列表中。

2 个答案:

答案 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;