动态绑定数据集到RDLC报表

5
我想将动态数据集绑定到rdlc。如果我在ASPX文件中使用内联DataSource(静态绑定),我可以查看报告。然而,如果我使用以下代码,则报告查看器会一直显示“正在加载...”图像。
我已经检查了数据集名称,并且如果我将数据集名称更改为“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代码:

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>

1
你能分享一下你的RDLC设计吗?如果我们动态绑定数据集,那么RDLC的设计会受到什么影响呢? - Ankur
你是否仍需要预先设计rdlc文件?或者你只是创建了rdlc文件,没有插入任何表格或绑定它?我已经测试过了,如果我先设计它 - 创建表格并将其与数据集绑定,它会完美地显示。但根据你的主要问题,我认为你是动态地完成这个过程的。 - Arif Sam
2个回答

3

我的问题已经解决了。

问题在于你需要将你的代码放在 IsPostBack 包装下面。

if (!Page.IsPostBack)
{
//your binding codes here
}

1
在Pade_load事件中,添加以下代码。
ReportViewer1.LocalReport.ReportPath = Server.MapPath("\\Reports\\Report.rdlc");
this.ReportViewer1.Width = 800;
this.ReportViewer1.Height = 600;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接