2

朋友们,我用c#开发了一个简单的应用程序,它有两个rdlc报告

我使用下面的代码将数据源绑定到报告查看器

 this.reportViewer1.LocalReport.ReportPath = @"C:\Documents and Settings\Administrator\My Documents\Visual Studio 2008\Projects\reports\reports\Report1.rdlc";
 reportViewer1.LocalReport.DataSources.Clear();
 reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("customer", dt.Tables[0])) ;
 this.reportViewer1.RefreshReport();

但是当报告生成时,它是空报告,没有数据将显示,任何意见???

4

3 回答 3

7

当您通过向导在项目中添加 .rdlc 报告时,默认情况下它将数据集名称设为'DataSet1'。现在,如果要动态绑定新数据集,则该数据集的名称必须为'DataSet1'。尝试更改它并检查 Table[0] 是否包含一些DataType与原始 dataType 匹配的数据(行) DataSet1。如果 DataType 不匹配,则数据不会出现在您的 ReportViewer 中。试试这个代码: -

string exeFolder = (Path.GetDirectoryName(Application.StartupPath)).Substring(0, (Path.GetDirectoryName(Application.StartupPath)).Length - 3);
string reportPath = Path.Combine(exeFolder, @"Reports\SessionReport.rdlc");
Microsoft.Reporting.WinForms.ReportDataSource rds = new Microsoft.Reporting.WinForms.ReportDataSource("DataSet1", yourDataSet.Tables[0]);
this.reportViewer1.LocalReport.DataSources.Add(rds);
this.reportViewer1.LocalReport.ReportPath = reportPath;
this.reportViewer1.RefreshReport();

有关 .rdlc 报告(核心逻辑)的更多详细信息,请参阅以下链接 如何在没有数据库的情况下创建报告 (RDLC)?

于 2013-07-08T11:22:07.440 回答
2

试试下面,可能是数据源名称不正确的问题。

reportViewer1.LocalReport.DataSources.Add(new ReportDataSource(ds.DataSetName + "_" + ds.Tables[0].TableName, ds.Tables[0]));

您可以检查 rdlc 文件内容上的数据集名称。检查数据集的名称属性是否与您在代码中给出的匹配。

于 2013-04-09T06:22:46.000 回答
0

这就是我使用对象绑定更新数据的方式: 在 Form1.cs 文件中:

private myClass m_products = new Products();
public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
           this.PaperBindingSource.DataSource = m_products.GetProducts();

this.PaperBindingSource.DataSource很重要。

于 2013-05-21T23:44:14.763 回答