动态绑定数据集到RDLC报告

TTC*_*TCG 5 c# report rdlc dynamic-rdlc-generation

我想将动态数据集绑定到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;
}
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

TTC*_*TCG 3

我已经解决了我的问题。

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

if (!Page.IsPostBack)
{
//your binding codes here
}
Run Code Online (Sandbox Code Playgroud)