2011-01-10 40 views
5

我想將動態數據集綁定到RDLC。如果我在ASPX文件中使用內聯數據源(靜態綁定),我可以查看報告。但是,如果我使用以下代碼,則報表查看器會一直顯示「加載..」圖像。將數據集動態綁定到RDLC報告

我已經檢查數據集的名字,如果我改變了數據集名稱爲「ORDERS2」,它表明我需要的數據集「訂單」不提供。所以,我在表單上添加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> 
+1

你能分享你的RDLC設計如何?如果我們動態綁定數據集,那麼rdlc設計如何呢? – Ankur 2013-08-05 15:28:11

回答

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;