2010-02-15 43 views
5

¿Cómo configuro programáticamente la fuente de datos para el control ReportViewer de ASP.NET?¿Cómo configuro programáticamente el origen de datos para el control ReportViewer de ASP.NET?

Tengo un control ReportViewer VS 2008 y quiero cambiar entre un par de informes diferentes.

Puedo cambiar informes configurando el origen del informe y actualizando el control, pero no puedo ver dónde establecer el origen de datos.

Cada informe tiene su propia fuente de datos, y si los configuro inicialmente cuando se construye el control está bien, pero necesito cambiar entre ellos.

+0

que estas hablando sobre el control ReportViewer, o algún otro control? – womp

+0

Sí, gracias. – Maestro1024

Respuesta

4

Supongo que la pregunta es sobre el control ReportViewer.

reportViewer.LocalReport.DataSources.Clear(); 
reportViewer.LocalReport.DataSources.Add(new ReportDataSource("dsname", source)); 

"dsname" es el nombre de la fuente de datos, se puede encontrar el archivo que .rdlc. source es la variable con los datos que desea mostrar en el informe.

+0

Cuando hago esto obtengo "# Ha ocurrido un error durante el procesamiento del informe * No se ha suministrado una fuente de datos para la fuente de datos ...." – Maestro1024

+0

Y la fuente de datos proporcionada en la fuente de datos para el informe predeterminado que configuré originalmente. Es como si la nueva fuente de datos realmente no se estuviera configurando. – Maestro1024

+0

Todavía estoy viendo esto. Me pregunto si tengo el "nombre de fuente" equivocado. ¿Cómo veo la fuente utilizada en el informe? – Maestro1024

1

1) marcado básica:

<asp:ScriptManager ID="ScriptManager1" runat="server" /> 
<rsweb:ReportViewer ID="rptView" Width="1000px" ProcessingMode="Local" 
     Font-Names="Verdana" Font-Size="8pt" InteractiveDeviceInfos="(Collection)" 
     WaitMessageFont-Names="Verdana" WaitMessageFont-Size="14pt" runat="server" > 
</rsweb:ReportViewer> 

2) editar el XML informe. Configurar sus datos & nombres de campo:

<DataSets> 
    <DataSet Name="dsSource"> 
    <Fields> 
     <Field Name="MyField1"> 
     <DataField>MyField1</DataField> 
     <rd:TypeName>System.String</rd:TypeName> 
     </Field> 
    <Query> 
     <DataSourceName>dsSource</DataSourceName> 
     <CommandText>/* Local Query */</CommandText> 
    </Query> 
    </DataSet> 
</DataSets> 

3) Establecer fuente de datos tanto en & informe visor de informes (no sé por qué ... ambos son necesarios)

SqlConnection cn = new SqlConnection(_connectionString); 
SqlCommand cmd = new SqlCommand("dbo.MyProc", cn); 
cmd.CommandType = CommandType.StoredProcedure; 
SqlDataAdapter da = new SqlDataAdapter(cmd); 
DataTable tbl = new DataTable(); 

cn.Open(); 
da.Fill(tbl); 
cn.Close(); 

rptView.Visible = true; 
rptView.LocalReport.DataSources.Clear(); 
ReportDataSource rptData = new ReportDataSource("dsSource", tbl); 

LocalReport r = new LocalReport(); 
r.ReportPath = Server.MapPath("~/Reports/MyReport.rdlc"); 
r.DataSources.Add(rptData); 

rptView.LocalReport.DataSources.Add(rptData); 
rptView.LocalReport.ReportPath = Server.MapPath("~/Reports/MyReport.rdlc"); 
rptView.LocalReport.Refresh(); 
0
GlobalReportViewer.AsyncRendering = True 
    If Session.Count > 0 Then 
     For i As Integer = 0 To Session.Count - 1 
      If Session(i).GetType().ToString() = "Microsoft.Reporting.WebForms.ReportHierarchy" Then 
       Session.RemoveAt(i) 
      End If 
     Next 
    End If 
    GlobalReportViewer.LocalReport.ReportPath = "" 
GlobalReportViewer.LocalReport.ReleaseSandboxAppDomain() 
GlobalReportViewer.LocalReport.DataSources.Add(New ReportDataSource("XXXDataSet_YYYTable", "ObjectDSZZZ")) 
GlobalReportViewer.LocalReport.ReportPath = "Reports\AAAReport.rdlc" 
GlobalReportViewer.LocalReport.Refresh() 
Cuestiones relacionadas