把你报表里的表属性改下,选择数据集里的表,这样的话你就直接用下面代码就行了
ReportDocument report = new ReportDocument();
report.Load(这里是你的报表的路径);
DataSet ds = new DataSet();
ds.Tables.Add(你的数据表);
ds.Tables[0].TableName = "DSPrint_DTBusiness"; //这里是你数据集中表的名字
report.SetDataSource(ds);
crystalReportViewer1.ReportSource = report;
这样就一定会显示。 rdlc格式的不太会用,我用的crystalReportView,楼主自己变通下

解决方案 »

  1.   

    这么久了,都没有人正确的回答么= =#
    我也遇到无法动态绑定这个问题了 问前辈同事,也没人知道- -#
     研究了一下,终于知道了,下面是本人的解决方法:
    1.首先在RDLC文件里的数据集里设置好数据集名称:本例为“subjects”,并且提前设定好表格式(列数、列名)
    2.动态创建表、数据源
    DataTable dt = ds.Tables[0];
    DataTable dtTest = new DataTable();
    dtTest.Columns.Add("ID");
    dtTest.Columns.Add("name");
    dtTest.Columns.Add("leader");
    dtTest.Rows.Add("0001","c#","unknow");
    ReportDataSource rds = new ReportDataSource("subjects", dtTest);//此处名称必须和前面定义的数据集名称“subjects”一样
    ReportViewer rpv = (ReportViewer)sender;//sender是reportViewer1_Load事件的sender对象
    rpv.LocalReport.DataSources[0] = rds; //最好不要用add ----假设此行行数为n
    //rpv.LocalReport.DataSources.Add(rds);//本句代码也可以取代上句(就是楼主用的方法),但是DataSource的数量变成了2.并非动态绑定的原意。
    //reportViewer1.LocalReport.DataSources[0]=rds;//如果不用事件触发的sender对象,本句也可以取代第n行代码
      

  2.   

    你没有为ReportViewer控件指定本地.rdlc文件。