2011-01-10 20 views
5

Me gustaría vincular el conjunto de datos dinámicamente a la rdlc. Puedo ver el informe si uso DataSource en línea en un archivo ASPX (enlace estático). Sin embargo, si uso los siguientes códigos, el visor de informes sigue mostrando la imagen "Cargando ...".Unión dinámica de Dataset a RDLC Reports

Ya he comprobado el nombre del conjunto de datos y si cambié el nombre del conjunto de datos a "Pedidos2", me muestra que el conjunto de datos requerido "Pedidos" no se proporciona. Entonces, agrego GridView en el formulario y pruebo mi DataSet. El conjunto de datos contiene datos y se muestra bien con GridView.

El problema es solo con el Informe y no pude vincular los datos dinámicamente a ReportViewer. Por favor, ayúdame. Gracias.

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

códigos ASPX son las siguientes:

<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

¿puedes compartir cómo es tu diseño de RDLC.? Si estamos vinculando el conjunto de datos dinámicamente, ¿qué ocurre con el diseño rdlc? – Ankur

+0

¿Todavía tenía que diseñar el archivo rdlc de antemano? ¿O acabas de crear el archivo rdlc, sin insertar ninguna tabla ni vincularlo? Lo he probado, si lo diseño primero, creando una tabla y enlazando con el conjunto de datos, se muestra perfectamente. Pero en base a su pregunta principal, pensé que lo haría dinámicamente. –

Respuesta

3

ya he resuelto mi problema.

El problema es que debe agregar sus códigos en la envoltura de IsPostBack.

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

En el caso Pade_load, agregue este código

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