如何将代码隐藏数据集绑定到RDLC?

时间:2019-02-13 03:26:29

标签: c# asp.net webforms rdlc reportviewer

我有一个页面,其中包含一个dropdownlist和reportviewer,并且我使用dropdownlist.selectValue作为我的参数来查询,并建立一个我想要的数据表

我的问题是:如何将代码隐藏数据表绑定到RDLC以及如何在reportviewer上显示

进行大量谷歌搜索,找到壁橱的结果 https://blogs.msdn.microsoft.com/sqlforum/2011/04/27/walkthrough-assign-dataset-dynamically-created-in-code-to-your-local-report-with-reportviewer/

只有一个错误

this.DataTable1BindingSource.DataSource = ds;
this.reportViewer1.RefreshReport();

我想这正是rdlc绑定我的编码数据表的地方。

但是我找不到DataTable1BindingSource

aspx

<asp:ScriptManager runat="server"></asp:ScriptManager> 
<rsweb:ReportViewer ID="ReportViewer1" runat="server" >
<LocalReport ReportPath="Report1.rdlc">
    <DataSources>
        <rsweb:ReportDataSource DataSourceId="ObjectDataSource1" Name="DataSet1" />
    </DataSources>
</LocalReport>
</rsweb:ReportViewer>
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" TypeName="DataSet1TableAdapters."></asp:ObjectDataSource>

cs

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{  
code dataset and datatable here
}

期望rdlc绑定我自己的编码数据表

1 个答案:

答案 0 :(得分:0)

最后,我通过将编码数据集重命名为DataSet.xsd中的相同名称来进行计算。不仅是架构,还需要使代码中的数据集名称与xsd文件中的名称匹配。

例如: 创建一个DataSet1.xsd,其中包含一个名为DataTable1(默认名称)的数据表

在您的代码中是

DataSet DataSet1 = new DataSet("something");
DataTable DataTable1 = DataSet1.Tables.Add("something");

如果您声明的其他名称与xsd中定义的名称不同,则会在ReportViewer上收到错误消息

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