WebForms ReportViewer数据源错误

时间:2012-06-20 12:43:27

标签: asp.net reporting-services reportviewer

我在表单上使用ReportViewer控件:

<form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <rsweb:ReportViewer ID="ReportViewer1" runat="server">
    </rsweb:ReportViewer>
</form>

报告在页面代码文件中初始化的文件路径:

protected void Page_Init(object sender, EventArgs e)
{
    ReportViewer1.LocalReport.ReportPath = "Reports/Source/Untitled.rdlc";
}

报告呈现时,我收到了下一个错误:

A data source instance has not been supplied for the data source 'DataSet1'.

连接正常(我测试过),当我尝试在MS SQL Server报表生成器中运行报表时 - 它也能正常工作(生成报表)。

1 个答案:

答案 0 :(得分:5)

在您的rdlc报告中,您在设计报告时添加了一个名为“DataSet1”的数据集。您需要传递此数据集将用于呈现报告的数据。

这是通过localreport数据源集合完成的。请注意,它是复数,意味着您的报表中可以包含多个数据集。

ReportViewer1.LocalReport.DataSources.Clear();

ReportDataSource rds = new ReportDataSource();
rds.Name = "DataSet1";  //this is the name of the DataSet on your report rdlc
rds.Value = datatable; //this contains the data and columns referenced in the dataset

ReportViewer1.LocalReport.DataSources.Add(rds);

如果查看下面的标签,您将看到报告查看器所期望的内容

<rsweb:ReportViewer ID="ReportViewer1" runat="server">
<LocalReport ReportPath="Report1.rdlc">
    <DataSources>
        <rsweb:ReportDataSource Name="DataSet1" />
    </DataSources>
</LocalReport>
</rsweb:ReportViewer>

<强>更新

对于第二部分,数据源DataSet11已经被声明,只需在代码隐藏中引用它,将数据传递为Value

ReportViewer1.LocalReport.DataSources["DataSet1"].Value = myData;