0

我有 2 张桌子:

第一的:

id | 2ndTableId | Name

第二:

id | name

我希望它们在 dataGridView 上显示为列:1-> 带有来自第二个表的名称列表的组合框(带有一些 where 子句),选定的值 = 来自第一个表的 '2ndTableId' 2-> 来自第一个表的名称

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

System.argumentException:DataGridViewComboBoxCell 值无效。

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

4

1 回答 1

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; }
}

然后在您中创建一个具有四列的数据网格视图。

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

于 2012-06-26T10:27:37.877 回答