c# 设置在 datagridview 组合框单元格中选择了哪个项目

c# set which item is selected in datagridview combobox cell

我有两个表格,在一个表格中我填写了 DataGridView 一些行,每行有两个组合框。

我能够从这些单元格中获取值和格式化值,但是当我尝试将所有这些数据复制到下一个不同形式的 DataGridView 时,我无法告诉他哪个ComboBox 中的项目应标记为选中。

当我环顾四周时,我发现了这些代码行(不幸的是,它们来自 6 年多以前)

dataGridView.Rows[index].Cells[3].Value = ImageFormat.Items[1];

(dataGridView.Rows[index].Cells[3] as DataGridViewComboBoxCell).Value = ImageFormat.Items[0];

DataGridViewComboBoxCell comboboxFormat = (DataGridViewComboBoxCell)(dataGridView.Rows[index].Cells[3]);

comboboxFormat.Value = ImageFormat.Items[0];

(dataGridView.Rows[index].Cells[3] as DataGridViewComboBoxCell).Value = (dataGridView.Rows[index].Cells[3] as DataGridViewComboBoxCell).Items[0];

不幸的是 none 这些都有效,并且大多数(如果不是全部)抛出“DataGridViewComboBoxCell 值无效”异常

也许值得一提的是,可能的项目是从数据库绑定的,如下所示:

string stm = "SELECT * FROM colours";
            using var cmd = new SQLiteCommand(stm, MainWin.con);
            SQLiteDataAdapter rdr = new SQLiteDataAdapter(cmd);
            DataTable dataTableColour = new DataTable();
            rdr.Fill(dataTableColour);

            stm = "SELECT * FROM formats";
            using var cmdd = new SQLiteCommand(stm, MainWin.con);
            SQLiteDataAdapter reader = new SQLiteDataAdapter(cmdd);
            DataTable dataTableFormat = new DataTable();
            reader.Fill(dataTableFormat);

            ImageFormat.ValueMember = "id";
            ImageFormat.DisplayMember = "name";
            ImageFormat.DataSource = dataTableFormat;

            ColourImage.ValueMember = "id";
            ColourImage.DisplayMember = "name";
            ColourImage.DataSource = dataTableColour;

您的 datagridview 应该绑定到某个数据表(比方说 ImageFiles)。将 ColourImage/ImageFormat 组合的 .DataPropertyName 属性 设置为组合应编辑的 [ImageFiles] 数据表中列的名称。不要尝试直接与 DGVCombo 交互;只需与网格绑定的数据表交互