2

レポートを生成するパラメータに基づいて、"CustomerId" というパラメータを Crystal Report ('.rpt') ファイルに渡します。このレポート ('.rpt') を Crystal Report Viewer にロードすると、正常に動作します...

しかし、私は別の「CustomerId」を持っています。パラメータに基づいてレポートを生成し、それらを単一のレポート ビューアーに読み込む必要があります。つまり、それらを 1 つずつ表示するのではなく、すべてのページを 1 つのレポート ビューアーで表示したいと考えています。

どなたかこの問題の解決方法を教えてください....

4

2 に答える 2

1

レポートごとにレポート ビューアーを作成します。次に、閲覧者がタブ コントロールにタブ ページを追加することを報告します。

スクリーンショット

        private void FormCrystalRepotViewer_Shown(object sender, EventArgs e)
    {
        ReportDocument crReport = crArrReport[0];
        crystalReportViewer.ReportSource = crReport;
        crystalReportViewer.Zoom(100);
        crystalReportViewer.PrintMode = CrystalDecisions.Windows.Forms.PrintMode.PrintToPrinter;
        tcTabControl.TabPages[0].Text = arrRaporlar.Get(0).sReportName;

        for (int i = 1; i < crArrReport.Count; i++)
        {
            crReport = crArrReport[i];
            CrystalDecisions.Windows.Forms.CrystalReportViewer crview = new CrystalDecisions.Windows.Forms.CrystalReportViewer();

            crview.ReportSource = crReport;
            crview.Zoom(100);
            crview.PrintMode = crystalReportViewer.PrintMode;
            crview.ActiveViewIndex = -1;
            crview.BorderStyle = crystalReportViewer.BorderStyle;
            crview.Cursor = crystalReportViewer.Cursor;
            crview.Dock = crystalReportViewer.Dock;
            crview.Location = crystalReportViewer.Location;
            crview.Size = crystalReportViewer.Size;
            crview.TabIndex = 0;
            crview.ToolPanelView = crystalReportViewer.ToolPanelView;
            crview.ShowParameterPanelButton = crystalReportViewer.ShowParameterPanelButton;
            crview.ShowLogo = crystalReportViewer.ShowLogo;

            crview.ReportRefresh += new CrystalDecisions.Windows.Forms.RefreshEventHandler(this.crystalReportViewer_ReportRefresh);

            TabPage page = new TabPage(arrRaporlar.Get(i).sReportName);
            tcTabControl.TabPages.Add(page);
            page.Controls.Add(crview);
            page.AutoScroll = true;
        }
    }
        private void crystalReportViewer_ReportRefresh(object source, CrystalDecisions.Windows.Forms.ViewerEventArgs e)
    {
        e.Handled = true;
        ParametreleriKontrolEt();
        crystalReportViewer.ReportSource = crArrReport[0];
        for (int i = 1; i < crArrReport.Count; i++)
        {
            CrystalDecisions.Windows.Forms.CrystalReportViewer crview = new CrystalDecisions.Windows.Forms.CrystalReportViewer();
            crview = tcTabControl.TabPages[i].Controls[0] as CrystalDecisions.Windows.Forms.CrystalReportViewer;
            crview.ReportSource = crArrReport[i];
        }
    }
于 2016-09-15T22:40:22.257 に答える