Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在c中将数据源绑定到.rdlc报表#_C#_Winforms_Dataset_Rdlc - Fatal编程技术网

C# 如何在c中将数据源绑定到.rdlc报表#

C# 如何在c中将数据源绑定到.rdlc报表#,c#,winforms,dataset,rdlc,C#,Winforms,Dataset,Rdlc,朋友们,我用c#开发了一个简单的应用程序,它有两个rdlc报告 我使用下面的代码将数据源绑定到报表查看器 this.reportViewer1.LocalReport.ReportPath = @"C:\Documents and Settings\Administrator\My Documents\Visual Studio 2008\Projects\reports\reports\Report1.rdlc"; reportViewer1.LocalReport.DataSources

朋友们,我用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();

但当生成报告时,它是空报告,不会显示任何数据,是否有意见

请尝试下面的内容,可能是数据源名称不正确的问题

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

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

这是我使用对象绑定更新数据的方式: 在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
非常重要。

当您通过向导在项目中添加.rdlc报表时,默认情况下,它将数据集名称设置为'DataSet1'。现在,若要动态绑定新数据集,那个么该数据集的名称必须是'DataSet1'。请尝试更改它,并检查表[0]是否包含一些数据(行),这些数据的数据类型
DataSet1
的原始数据类型匹配。如果数据类型不匹配,那么数据将不会出现在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报告(核心逻辑)的更多详细信息,请参阅以下链接

那么
dt.表[0]
真的包含数据吗?另外:您报告中的数据源名为
customer
?@marc_s-是的,我用forloop测试了它。数据位于customer表中的dataset中,reportDataSource的名称应该是什么?表名还是数据集名?`reportViewer1.LocalReport.DataSources.Add(新的ReportDataSource(“customer”,dt.Tables[0])`报表中数据源的名称需要与调用
新报表数据源(..)
时使用的名称相同-如果在创建
报表数据源时调用它
客户
.RDLC
报告中的数据源名称也必须是
Customer
@marc_s-sorrry要问这个问题,如何将
数据源
分配给
.RDLC
报告?