如何解决c#设置在datagridview组合框单元格中选择哪个项目
我有两种形式,一种是用一些行填充 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];
不幸的是,这些都没有奏效,而且大多数(如果不是全部)抛出“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 交互;只需与网格绑定的数据表交互
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。