Как программно установить источник данных для элемента управления ASP.NET ReportViewer? - PullRequest
5 голосов
/ 15 февраля 2010

Как программно установить источник данных для элемента управления ASP.NET ReportViewer?

У меня есть элемент управления VS 2008 ReportViewer, и я хочу переключаться между несколькими различными отчетами.

Я могу переключать отчеты, устанавливая источник отчета и обновляя элемент управления, но не вижу, где установить источник данных.

Каждый отчет имеет свой собственный источник данных, и если я настраиваю их изначально при создании элемента управления, это нормально, но мне нужно переключаться между ними.

Ответы [ 3 ]

4 голосов
/ 15 февраля 2010

Я предполагаю, что вопрос касается элемента управления ReportViewer.

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

"dsname" - это имя источника данных, вы можете найти его .rdlc файл. source - это переменная с данными, которые вы хотите отобразить в отчете.

1 голос
/ 10 октября 2013

1) Основная разметка:

<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) Редактировать отчет XML. Настройте набор данных и имена полей:

<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) Установить источник данных как для отчета, так и для средства просмотра отчетов (не знаю, зачем ... оба необходимы)

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 голосов
/ 31 июля 2014
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()
...