0

私は2つのテーブルを持っています:

初め:

id | 2ndTableId | Name

2番:

id | name

dataGridViewに列として表示したい:1-> 2番目のテーブルの名前のリストを含むComboBox(where句を含む)、選択した値=1番目のテーブルの名前'2ndTableId'2->最初のテーブルの名前

さらに、ComboBox 2の値(idとname)を保持したいと思います。IdプロパティとNameプロパティを使用して独自のクラスMyComboBoxを作成しましたが、エラーが発生しました。

System.argumentException:DataGridViewComboBoxCellの値が無効です。

これをどうやって管理するのか分かりません。手伝って頂けますか?

4

1 に答える 1

0

私は同じシナリオを持っていました。2 つのテーブルに対して 2 つの DTO クラスを作成し、それらを割り当てます。2 つのクラスを作成する

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

次に、4 つの列を持つ 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 

次に、必要なデータを含む 2 つのリストを生成します。

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 に答える