WebForms ReportViewer数据源错误

Evg*_*vin 3 asp.net reportviewer reporting-services

我在表单上使用ReportViewer控件:

<form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <rsweb:ReportViewer ID="ReportViewer1" runat="server">
    </rsweb:ReportViewer>
</form>
Run Code Online (Sandbox Code Playgroud)

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

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

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

A data source instance has not been supplied for the data source 'DataSet1'.
Run Code Online (Sandbox Code Playgroud)

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

cod*_*biz 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);
Run Code Online (Sandbox Code Playgroud)

如果您查看下面的标记,您将看到reportviewer期望的内容

<rsweb:ReportViewer ID="ReportViewer1" runat="server">
<LocalReport ReportPath="Report1.rdlc">
    <DataSources>
        <rsweb:ReportDataSource Name="DataSet1" />
    </DataSources>
</LocalReport>
</rsweb:ReportViewer>
Run Code Online (Sandbox Code Playgroud)

更新

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

ReportViewer1.LocalReport.DataSources["DataSet1"].Value = myData;
Run Code Online (Sandbox Code Playgroud)