动态绑定数据集到RDLC报告

我想将动态数据集绑定到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代码如下:

 

我已经解决了我的问题。

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

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

在Pade_load事件中,添加此代码

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