2013-08-26 45 views
0

我使用與VS 10水晶報表,顯示數據時多個表中的數據集

我已經添加數據集。

現在,如果在DataSet中只有一個表,那麼數據正在顯示,而如果我添加兩個帶有鏈接的表,則不會顯示數據。

而且我正在從DataSet(XSD)的這個表中取得字段。

如何解決這個問題。

在此先感謝。 Khilen

回答

0

您需要綁定您打算使用的DataTable,而不是綁定整個DataSet。 這SO的回答顯示了一個很好的例子:https://stackoverflow.com/a/8341474/283895

(代碼那篇文章複製)

ReportDocument rpt = new ReportDocument(); 
rpt.load(); 
rpt.Database.Tables[0].SetDataSource(ds.Tables[0]); 
this.crystalReportViewer1.ReportSource = rpt; 
0

我已經習慣了做的是;

  1. 將2個數據集添加到報告中。
  2. 以下代碼用於將2個數據集隱藏到相同的報告中。

C#

public partial class Default2 : System.Web.UI.Page 
{ 
    SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["MyCtr1"].ConnectionString); 
    SqlConnection cn1 = new SqlConnection(ConfigurationManager.ConnectionStrings["MyCtr2"].ConnectionString); 
    ReportDocument rdoc = new ReportDocument(); 
    DataTable ds = new DataTable(); 
    DataTable ds1 = new DataTable(); 
    protected void Page_Load(object sender, EventArgs e) 
    { 

     if (!IsPostBack) 
     { 

      loadreport(); 
      } 

    private void loadreport() 
{ 
{    
     cn.Open(); 
     SqlDataAdapter da = new SqlDataAdapter("select * from [MyTable1] where (Number LIKE '" + DropDownList1.Text + "') ", cn); 
     da.Fill(ds); 
     cn.Close(); 
{ 
{ 
     cn1.Open(); 
     SqlDataAdapter da1 = new SqlDataAdapter("select * from [MyTable2] where (No LIKE '" + DropDownList1.Text + "') ", cn1); 
      //DataTable ds1 = new DataTable(); 
     da1.Fill(ds1); 
    cn1.Close(); 
} 
    rdoc.Database.Tables[0].SetDataSource(ds); 
    rdoc.Database.Tables[1].SetDataSource(ds1); 

    InvoiceReport.ReportSource = rdoc; 
    InvoiceReport.DataBind(); 
}