2011-01-10 10 views
5

Ich möchte den dynamischen Datensatz an den RDLC binden. Ich kann den Bericht anzeigen, wenn ich Inline-DataSource in ASPX-Datei (statische Bindung) verwende. Wenn ich jedoch die folgenden Codes verwende, zeigt der Report-Viewer weiterhin "Loading .." Image an.Dynamisches Binden von Dataset an RDLC-Berichte

Ich habe den Dataset-Namen bereits überprüft und wenn ich den Dataset-Namen in "Orders2" änderte, zeigt es mir, dass der erforderliche Dataset "Orders" nicht zur Verfügung gestellt wird. Also füge ich das GridView auf dem Formular hinzu und teste mein DataSet. Der Datensatz enthält Daten und zeigt gut mit der GridView.

Das Problem ist nur mit dem Bericht und ich konnte Daten nicht dynamisch an den ReportViewer binden. Bitte hilf mir. Vielen Dank.

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-Codes sind wie folgt:

<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

können Sie teilen, wie ist Ihr Design von RDLC.? Wenn wir Daten dynamisch binden, was ist dann mit dem Design von rdlc? – Ankur

+0

Mussten Sie die rdlc-Datei vorher noch entwerfen? Oder haben Sie gerade die rdlc-Datei erstellt, ohne Tabellen einzufügen oder zu binden? Ich habe es getestet, wenn ich es zuerst entwerfe - Tabelle erstellen und mit Datensatz verbinden, es zeigt perfekt. Aber basierend auf deiner Hauptfrage dachte ich, dass du es dynamisch machst. –

Antwort

3

Ich habe bereits mein Problem gelöst.

Das Problem ist, dass Sie Ihre Codes unter IsPostBack Wrapping hinzufügen müssen.

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

Im Pade_load Ereignis, fügen Sie diesen Code

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