将数据集动态绑定到 RDLC 报告

Posted

技术标签:

【中文标题】将数据集动态绑定到 RDLC 报告【英文标题】:Dynamically binding of Dataset to RDLC Reports 【发布时间】:2011-01-10 22:42:42 【问题描述】:

我想将动态数据集绑定到 rdlc。如果我在 ASPX 文件(静态绑定)中使用内联数据源,我可以查看报告。但是,如果我使用以下代码,报告查看器会一直显示“正在加载..”图像。

我已经检查了数据集名称,如果我将数据集名称更改为“Orders2”,则表明未提供所需的数据集“Orders”。因此,我在表单上添加了 GridView 并测试了我的 DataSet。数据集包含数据并在 GridView 中显示良好。

问题仅出在报告上,我无法将数据动态绑定到 ReportViewer。请帮我。谢谢。

protected void Page_Load(object sender, EventArgs e)

    DataSet ds = GetDataSet();
    ReportDataSource rds = new ReportDataSource("Orders", ds.Tables[0]);
    ReportViewer1.LocalReport.DataSources.Clear();
    ReportViewer1.LocalReport.DataSources.Add(rds);
    ReportViewer1.LocalReport.Refresh();

    GridView1.DataSource = ds;
    GridView1.DataBind();


private DataSet GetDataSet()

    var conString = ConfigurationManager.ConnectionStrings["dotnetConnectionString"];
    string strConnString = conString.ConnectionString;

    SqlConnection conn = new SqlConnection(strConnString);
    conn.Open();
    string sql = "Select * FROM Orders";

    SqlDataAdapter ad = new SqlDataAdapter(sql, conn);
    DataSet ds = new DataSet();        
    ad.Fill(ds);

    return ds;

ASPX代码如下:

<form id="form1" runat="server">
<div>
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <rsweb:ReportViewer ID="ReportViewer1" runat="server" Height="600px" Width="800px">
        <LocalReport ReportPath="Reports\Report.rdlc">
            <DataSources>
                <rsweb:ReportDataSource />
            </DataSources>
        </LocalReport>
    </rsweb:ReportViewer>
    <asp:GridView ID="GridView1" runat="server">
    </asp:GridView>
</div>
</form>

【问题讨论】:

你能分享你的RDLC设计吗?如果我们动态绑定数据集,那么 rdlc 设计呢? 还需要提前设计rdlc文件吗?还是您只是创建了 rdlc 文件,没有插入任何表或绑定它?我已经测试过了,如果我先设计它 - 创建表并与数据集绑定,它会完美显示。但是根据您的主要问题,我认为您是动态进行的。 【参考方案1】:

我的问题已经解决了。

问题是您需要在 IsPostBack 包装下添加代码。

if (!Page.IsPostBack)

//your binding codes here

【讨论】:

【参考方案2】:

在 Pade_load 事件中,添加此代码

ReportViewer1.LocalReport.ReportPath = Server.MapPath("\\Reports\\Report.rdlc");
this.ReportViewer1.Width = 800;
this.ReportViewer1.Height = 600;

【讨论】:

以上是关于将数据集动态绑定到 RDLC 报告的主要内容,如果未能解决你的问题,请参考以下文章

报告 rdlc 中的外部图像

BIRT将两个数据集中的字段报告/组合到一个动态文本框中

动态设置 RDLC 报告中的图像源

RDLC报表绑定XSD文件问题

XtraReport三动态数据绑定

如何从 SQL Server Express 中的动态查询创建 RDLC 报告