今天一直在搞报表,我就想用reportviewer显示我的一个datatable里面的内容,而这个datatable的dataset来源于一个存储过程。现在还是不能成功。
reportviewer应该是report的浏览器吧。
通过网上资料,我怎么没看出他跟report有什么关系呢。我是这样做的,但是还是不能显示数据
1. 拖拽一个reportviewer控件rptviewer1,选好report:report1
2. 添加一个dataset1,并将此dataset1里面的datatable1的内容显示在report1上
3. 加几行代码绑定reportviewer和Dataset:Microsoft.Reporting.WinForms.ReportDataSource rds = new Microsoft.Reporting.WinForms.ReportDataSource();
            rds.Name = "aaa";
            rds.Value = ds1.DataTable1;//我肯定datatable1里面有数据
            //reportViewer1.LocalReport.ReportPath = "Report1.rdlc";
            reportViewer1.LocalReport.DataSources.Add(rds);
            reportViewer1.RefreshReport();
            reportViewer1.LocalReport.Refresh();可是总是只显示出report1的design,而显示不出dataset.DataTable1里的数据,请问该怎么做?
是不是report和dataset之间有什么我没关联上的?reportviewer,dataset,report之间是什么关系?

解决方案 »

  1.   

    ReportViewer控件加载report
    ReportViewer1.LocalReport.ReportPath =""; //设置报表所在路径        
    SqlConnection MyConn=db.createConnection();
    MyConn.Open();
    SqlDataAdapter MyAdapter = new SqlDataAdapter(sql, MyConn);
    DataSet ds = new DataSet();
    MyAdapter.Fill(ds, "test");
    ReportDataSource rds = new ReportDataSource(ds_string, ds.Tables["test"]);//添加报表数据源,和数据表。数据源里的字段必须要在数据表里能找到对应的字段。
    ReportViewer1.LocalReport.DataSources.Clear();
    ReportViewer1.LocalReport.DataSources.Add(rds);//添加数据源
    ReportViewer1.LocalReport.Refresh();//刷新报表http://topic.csdn.net/u/20090425/18/8e632f55-0908-4ad5-ac3a-0d3cb9a288df.html
      

  2.   

    大哥,您说的这些我都做了呀!我刚才就没写ReportViewer1.LocalReport.DataSources.Clear();
    可是加了这句话后,reportviewer完全是disable的状态,不但任何数据没有,连表头也不见了. 列名就一个nvarchar的。 我现在最困惑的是:report的设计,为什么非得在VS中创建一个DataSet?然后用这个DataSet来接我执行sp的返回值呢?有什么办法能把您的代码里的ds直接关联到report中么?您的ds_string是不是随便取的一个名字而已?
      

  3.   

    唉呦,烦死我了。我debug都看到数据源rds里有值了,可是reportviewer里除了表头依然是一片空白。就一列,name,string的,我用设计器设计的report,里面的值的表达式是=Fields!name.Value,完全没问题啊!!!到底怎么回事?
      

  4.   

    如果用designer设计report,里面直接连接数据库的话,也就是静态地从数据库中得到表,这样reportviewer是没有问题的。关键是必须动态地调用我的sp,这样得到的dataset好像跟report没有关联起来,请问怎样才能将生成好的DataSet和report及时关联呢?