【问题标题】:How can I bind code-behind dataset to RDLC?如何将代码隐藏数据集绑定到 RDLC?
【发布时间】:2019-07-06 19:20:37
【问题描述】:

我有一个包含下拉列表和报表查看器的页面,我使用 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 绑定我自己的编码数据表

【问题讨论】:

  • 不是this.ObjectDataSource1吗?
  • @JohnD DataTable1BindingSource 是在 VS 自动生成的 Designer.cs 中定义的,但我没有这个文件

标签: c# asp.net webforms rdlc reportviewer


【解决方案1】:

最后,我将我的编码数据集重命名为 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'.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-30
    • 2011-04-09
    • 2010-12-16
    • 2016-07-09
    • 2012-07-15
    • 1970-01-01
    • 2017-08-15
    相关资源
    最近更新 更多