DataGridView + ComboBox +来自2个表的数据

时间:2012-06-26 09:45:00

标签: c# datagridview combobox npgsql

我有两张桌子:

首先:

id | 2ndTableId | Name

第二

id | name

我希望它们在dataGridView上显示为列: 1 - > ComboBox包含第二个表中的名称列表(带有一些where子句),选择值=来自第一个表'2ndTableId' 2→第一张表中的名字

此外,我想保留ComboBox 2值(id和name)。我使用Id和Name属性创建了自己的类MyComboBox,但是我收到了一个错误:

System.argumentException:DataGridViewComboBoxCell值无效。

我不知道如何管理这个。你能救我吗?

1 个答案:

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