所以这里有一些背景故事可以尝试将事情放到上下文中
首先是数据格式:我有两个像这样结构化的数据库
DB1
此表包含Field_Id
,以及该字段的所有属性DB2
此表包含更广泛的信息以及对DB1 Field_Id
的引用,该引用用于获取Field_Name
这么简单的sql查询能够更好地描述
Select Field_Name From DB1 Where Field_Id = (select Field_Id From DB2 where param = %)
这将返回一个列表,该列表绑定到数据表中的DataGridViewComboBox
。现在到目前为止一切都很好,ComboBox
得到补充整个DataGridView
得到填补问题出现在这里
for (int i = 0; i <= dataGridView1.RowCount - 2; i++)
{
dataGridView1.Rows[i].Cells[0].Value = valuetosetindex;
dataGridView1.Refresh();
}
事情是这没有设置第0列内部的ComboBox
的值,如果我只是将列设置为它工作的字符串,但值集不起作用。
如果需要,我非常乐意添加更多代码。
使用您的代码片段,您将向对象添加无效值,从而产生ArgumentException
。
就像你已经提到的那样,如果你为它正在工作的值分配一个字符串。你只需要访问valuetosetindex
的ComboBox
元素:
dataGridView1.Rows[i].Cells[0].Value = yourColumn.Items[valuetosetindex];
在这段代码中,yourColumn
是你的ComboBox
,它绑定在列上。
您的Datagridview如何绑定到数据?我建议使用数据集和BindingSource来连接它。如果绑定它,则可以选择使用ComboBox作为列类型。然后,您可以将第二个数据集绑定到该Combobox。这会自动创建链接。