C# 当数据集中有多个表时,在crystal report中显示数据

C# 当数据集中有多个表时,在crystal report中显示数据,c#,sql,crystal-reports,dataset,C#,Sql,Crystal Reports,Dataset,我正在使用VS 10的Crystal Report 我添加了数据集 现在,若数据集中只有一个表,那个么将显示数据,而若我添加两个带有链接的表,那个么将不显示数据 我从这个数据集表(XSD)中获取字段 如何克服这个问题 提前谢谢。 Khilen您需要绑定要使用的数据表,而不是绑定整个数据集。 这个答案显示了一个很好的例子: (代码复制自该文章) 我习惯做的是 将2个数据集添加到crstal报告 下面是将2个数据集盲入同一报告的代码 C# ReportDocument rpt = new Repor

我正在使用VS 10的Crystal Report

我添加了数据集

现在,若数据集中只有一个表,那个么将显示数据,而若我添加两个带有链接的表,那个么将不显示数据

我从这个数据集表(XSD)中获取字段

如何克服这个问题

提前谢谢。
Khilen

您需要绑定要使用的数据表,而不是绑定整个数据集。 这个答案显示了一个很好的例子:

(代码复制自该文章)


我习惯做的是

  • 将2个数据集添加到crstal报告
  • 下面是将2个数据集盲入同一报告的代码
  • C#

    ReportDocument rpt = new ReportDocument();
    rpt.load();
    rpt.Database.Tables[0].SetDataSource(ds.Tables[0]); 
    this.crystalReportViewer1.ReportSource = rpt;
    
      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();
    }