2010-02-15 13 views
5

Jak programowo ustawić źródło danych dla formantu programu ASP.NET ReportViewer?Jak programowo ustawić źródło danych dla formantu ASP.NET ReportViewer?

Mam narzędzie VS 2008 ReportViewer i chcę przełączać się między kilkoma różnymi raportami.

Mogę przełączać raporty, ustawiając źródło raportu i odświeżając formant, ale nie widzę, gdzie ustawić źródło danych.

Każdy raport ma własne źródło danych, a jeśli skonfiguruję je początkowo, gdy sterowanie jest zbudowane, jest w porządku, ale muszę przełączać się między nimi.

+0

Mówisz o formancie ReportViewer lub innym kontrolerze? – womp

+0

Tak, byłem wdzięczny. – Maestro1024

Odpowiedz

4

Zakładam, że pytanie dotyczy kontroli ReportViewer.

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

"dsname" to nazwa źródła danych, można znaleźć .rdlc go złożyć. source jest zmienną zawierającą dane, które mają być wyświetlane w raporcie.

+0

Kiedy to zrobię, otrzymam "# Wystąpił błąd podczas przetwarzania raportu: * Dla źródła danych nie dostarczono instancji źródła danych ...." – Maestro1024

+0

Źródło źródła danych podane w źródle danych dla domyślny raport, który pierwotnie przygotowałem. To tak, jakby nowe źródło danych naprawdę nie było ustawione. – Maestro1024

+0

Nadal patrzę na to. Zastanawiam się, czy mam złą "nazwę źródła". Jak mogę zobaczyć źródło użyte w raporcie? – Maestro1024

1

1) Podstawowe znaczniki:

<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) Edycja XML raportu. Skonfigurować zestaw danych & nazwy pól:

<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) ustawić źródło danych na podają & Report Viewer (nie wiem dlaczego ... obie są konieczne)

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() 
Powiązane problemy