C# 主详图C网格显示空白和早期

C# 主详图C网格显示空白和早期,c#,sql,winforms,master-detail,C#,Sql,Winforms,Master Detail,我试图创建一个双datagridview主详细信息表单来显示SQL语句的结果,但似乎有一个额外的复杂性,因为我要显示的两个结果来自同一个表:我只希望ID显示在顶部网格中,然后从表的其余部分详细说明要在底部网格中显示的相同ID。如果我使用了错误的方法,那么有人能给我指出错误的方向吗 我当前的问题是,代码到达DataRelation Rel=newdatarelation。。。。并在此时显示两个数据网格都为空的表单,而不是执行其余代码 我已将完整版本粘贴到下面: private vo

我试图创建一个双datagridview主详细信息表单来显示SQL语句的结果,但似乎有一个额外的复杂性,因为我要显示的两个结果来自同一个表:我只希望ID显示在顶部网格中,然后从表的其余部分详细说明要在底部网格中显示的相同ID。如果我使用了错误的方法,那么有人能给我指出错误的方向吗

我当前的问题是,代码到达DataRelation Rel=newdatarelation。。。。并在此时显示两个数据网格都为空的表单,而不是执行其余代码

我已将完整版本粘贴到下面:

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

    }

通过在SQL server上创建一个视图来解决这个问题,该视图模仿了我试图实现的第一个select语句。然后我引用了masterDataAdapter中的视图,并从detailDataAdapter中的基础表中检索了其余信息