1

SQL ステートメントの結果を表示するために、2 つのデータグリッドビューのマスター/詳細フォームを作成しようとしていますが、表示したい 2 つの結果が同じテーブルからのものであるという点で、複雑さが増しているようです: ID だけが必要です上部のグリッドに表示され、同じ ID に関するテーブルの残りの詳細が下部のグリッドに表示されます。私が間違った方法を使用している場合、誰かが私を間違った方向に向けてもらえますか?

私の現在の問題は、コードDataRelation Rel = new DataRelation....の残りの部分を実行するのではなく、その時点でコードがフォームに到達し、(両方の DataGrid が空白の状態で) 表示されることです。

以下に完全版を貼り付けました。

        private void Form1_Load(object sender, EventArgs e)
    {
        SpContain.Panel1.Controls.Add(masterDataGridView);
        SpContain.Panel2.Controls.Add(detailsDataGridView);
        masterDataGridView.DataSource = masterBindingSource;
        detailsDataGridView.DataSource = detailsBindingSource;
        GetData();
    }

    private void GetData()
    {
        string ConnStr = "Server=TradarUAT\\uattradar; Integrated Security=SSPI; Initial Catalog=TradeFiles;";

        SqlConnection Conn = new SqlConnection(ConnStr);

        DataSet Data = new DataSet();
        Data.Locale = System.Globalization.CultureInfo.InvariantCulture;

        SqlDataAdapter masterDataAdapter = new SqlDataAdapter("Select MasterReference from [TradeFiles].[dbo].[OMG-Rejects] GROUP BY MasterReference", Conn);
        masterDataAdapter.Fill(Data, "[TradeFiles].[dbo].[OMG-Rejects]");

        SqlDataAdapter detailDataAdapter = new SqlDataAdapter("Select ImportedDT,TypeIndicator,FileNumber,MasterReference,ClientAlocRef,VersionNumber,DateTimeStamp,ErrorID,ErrorKey,ErrorTxt,ErrorParamType,ErrorParamValue from [TradeFiles].[dbo].[OMG-Rejects]", Conn);
            detailDataAdapter.Fill(Data, "[TradeFiles].[dbo].[OMG-Rejects]");

        DataRelation Rel = new DataRelation("RejectDetail",
            Data.Tables[0].Columns["MasterReference"], Data.Tables[1].Columns["MasterReference"]); 

コードは上記の行で実行を停止します

        Data.Relations.Add(Rel);

        masterBindingSource.DataSource = Data;
        masterBindingSource.DataMember = "[TradeFiles].[dbo].[OMG-Rejects]";

        detailsBindingSource.DataSource = masterBindingSource;
        detailsBindingSource.DataMember = "RejectDetail";

    }
4

1 に答える 1