1

現在、アプリケーションの「高度な」検索フォームに取り組んでいます。を使用しdatagridviewて結果を表示しています。アイデアは、(多くのオプションで)徹底的に検索できるようにすることです。

現在、私は次のようにデータグリッドビューを埋めます:

    dgvData.AutoGenerateColumns = false;

        if (cbbKlant.SelectedItem != null)
        {
            dgvData.DataSource = StatistiekManagement.getOpdrachten((klant)cbbKlant.SelectedItem);

            //ID kolom
            DataGridViewTextBoxColumn id = new DataGridViewTextBoxColumn();
            id.Name = "ID";
            id.DataPropertyName = "opdracht_id";

            //Plaatsen kolom
            DataGridViewTextBoxColumn plaatsen = new DataGridViewTextBoxColumn();
            plaatsen.Name = "Plaatsen";
            plaatsen.DataPropertyName = "aantal_personen";

            //Vertrekplaats kolom
            DataGridViewTextBoxColumn vertrek = new DataGridViewTextBoxColumn();
            vertrek.Name = "Vertrek";
            vertrek.DataPropertyName = "locatie_id";

            this.dgvData.Columns.Add(id);
            this.dgvData.Columns.Add(plaatsen);
            this.dgvData.Columns.Add(vertrek);
        }

datagridviewここでの問題は、別のテーブルから情報を追加したいということです。例: 私には がありcontract、このコントラクトには がありlocationます。locationこれに を表示するにはどうすればよいdatagridviewですか?

LINQ TO SQLデータベースからデータを取得するためにも使用します。

ありがとう、トーマス

4

2 に答える 2

1

位置をアタッチするにはいくつかの方法があります。最も簡単なのは、ロケーションをプロパティとしてバインドされた基本クラスに追加できる場合です。データベース内のフィールドである必要はありません。バインドできるプロパティだけです。継承ができない場合は、カプセル化が機能することがあります。

上記に加えて、(バインドされた) datagridview にバインドされていない列をいつでも追加できます。表示する値は、好きなソースから取得できます。値を表示する方法の 1 つは、datagridview の cellformatting イベントを使用することです。

        //inside initialization void
        dgvData.CellFormatting+=new DataGridViewCellFormattingEventHandler(dgvData_CellFormatting);
        dvcol = new DataGridViewTextBoxColumn();
        dgvData.Columns.Add(dvcol);
    }

    DataGridViewColumn dvcol;

    void dgvData_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
    {
        if (dvcol != null && e.RowIndex != -1 && e.ColumnIndex == dvcol.Index)//where Column1 is your combobox column
        {
            var rec = (YourRecordTypeSuchAsContract)dgvData.Rows[e.RowIndex].DataBoundItem;
            e.Value = ""; //get description based on the rec
        }
    }
于 2012-07-04T15:44:40.643 に答える
1

datagridview を 2 つの異なるソースにバインドすることはできません。

解決策は、SQL ステートメントを記述して 2 つの異なるテーブルを結合し、それをデータセットに入力することです。その後、それをデータ ソースとして使用できます。

于 2012-07-04T15:19:54.837 に答える