2011-01-10 1 views
5

Je souhaite lier dynamiquement l'ensemble de données à rdlc. Je peux voir le rapport si j'utilise DataSource inline dans le fichier ASPX (liaison statique). Toutefois, si j'utilise les codes suivants, la visionneuse de rapports affiche "Chargement". Image.Liaison dynamique d'un jeu de données aux rapports RDLC

Je l'ai déjà vérifier le nom du jeu de données et si je l'ai changé le nom du jeu de données à « Orders2 », il me montre que nécessaire dataset « ordres » ne sont pas fournis. Donc, j'ajoute GridView sur le formulaire et je teste mon DataSet. L'ensemble de données contient des données et s'affiche bien avec GridView.

Le problème est uniquement avec le rapport et je ne pouvais pas lier dynamiquement des données au ReportViewer. Aidez-moi, s'il vous plaît. Merci.

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; 
} 

codes ASPX sont comme ci-dessous:

<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

pouvez-vous partager comment est votre conception de RDLC.? Si nous lions dynamiquement les données, qu'en est-il du design rdlc? – Ankur

+0

Aviez-vous encore besoin de concevoir le fichier rdlc? Ou avez-vous créé le fichier rdlc sans insérer de tables ou le lier? Ive l'a testé, si je le conçois d'abord - créer une table et lier avec un ensemble de données, cela se voit parfaitement. Mais basé sur votre question principale, j'ai pensé que vous le faites dynamiquement. –

Répondre

3

Je l'ai déjà résolu mon problème.

Le problème est que vous devez ajouter vos codes sous le retour IsPostBack.

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

En cas Pade_load, ajoutez ce code

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