我有两张桌子:
首先:
id | 2ndTableId | Name
第二
id | name
我希望它们在dataGridView上显示为列: 1 - > ComboBox包含第二个表中的名称列表(带有一些where子句),选择值=来自第一个表'2ndTableId' 2→第一张表中的名字
此外,我想保留ComboBox 2值(id和name)。我使用Id和Name属性创建了自己的类MyComboBox,但是我收到了一个错误:
System.argumentException:DataGridViewComboBoxCell值无效。
我不知道如何管理这个。你能救我吗?
答案 0 :(得分:0)
我有同样的情景。我为两个表创建了两个DTO类并分配它们。 创建两个类
public class Table1
{
public int Id { get; set; }
public int Table2Id { get; set; }
public string Name { get; set; }
}
public class Table2
{
public int Table2Id { get; set; }
public string Table2Name { get; set; }
}
然后在你创建一个包含四列的datagridview。
Column1=> Name:idDropDown Default Text Style:DataGridViewCellStyle { }
Column 2=> Name:Table1Id DataPropertyName:Table1Id
Column 3=> Name:Table2Id DataPropertyName:Table2Id
Column 4=> Name:Tbale1Name DataPropertyName:Tbale1Name
然后生成两个包含所需数据的列表。
List<Table1> dropDownList;
List<Table2> gridData;
在您的代码中使用如下
idDropDown.DisplayMember="Table2Name";
idDropDown.ValueMember="Table2Id";
idDropDown.DataSource=dropDownList;
gridview1.AutoGenerateColumns = false;
gridview1.DataSource=gridData;
主要的是我们必须在此代码中将AutoGenerateColumns设置为False