3

我在表单上使用 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 Report Builder 中运行我的报告时 - 它也正常工作(生成了报告)。

4

1 回答 1

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;
于 2012-06-20T13:10:04.330 回答