2013-06-18 62 views
1

我試圖創建一個雙DataGridView Master-Detail窗體來顯示一條SQL語句的結果,但似乎有一個額外的複雜因素,我想要顯示的兩個結果來自同一個表格:我只想讓ID出現在頂部網格中,然後從表格的其餘部分詳細說明有關相同ID的信息以顯示在底部網格中。如果我使用了錯誤的方法,那麼有人可能會指出我錯誤的方向嗎?主要細節C#網格顯示空白和早期

我目前的問題是,代碼得到DataRelation Rel = new DataRelation....,並顯示在這一點上的形式(兩個DataGrids爲空),而不是執行其餘的代碼。

我已經粘貼了以下完整版本:

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

    } 

回答

0

管理由模仿第一個SQL服務器上創建一個視圖來解決這個選擇我試圖達到的聲明。然後我只是引用masterDataAdapter中的視圖,並從detailDataAdapter中的基礎表中檢索其餘信息。