Condividi tramite


Opzioni di collegamento dei report per Web Forms Viewer

Gli scenari che seguono si applicano alle applicazioni Visual Basic .NET e C#, nonché alle applicazioni Managed C++ se non indicato diversamente.

Scenario 1: Report locale

Si supponga che esistano le seguenti condizioni e che un report di Crystal sia disponibile su un computer locale:

  • La cartella C:\Reports su un computer locale contiene un report di Crystal, My Report.rpt.
  • In un progetto Visual Basic o C#:
    • Sull'host locale http://hostlocale è stato creato un progetto Applicazione Web ASP.NET MyProject.
    • È stato inserito un Web Forms Viewer, CrystalReportViewer1, nel Web Form, WebForm1.aspx, all'interno di MyProject.
  • In un progetto Managed C++, MyProject:
    • È stato inserito un Web Forms Viewer, CrystalReportViewer1, in MyProject.cpp all'interno di MyProject.

È possibile collegare My Report.rpt a Web Forms Viewer in base al nome di report, all'oggetto report o al componente di report non tipizzato.

Collegamento per nome di report

In un progetto Visual Basic o C# è possibile specificare la proprietà ReportSource tramite la finestra delle proprietà o il codice:

  • Impostare la proprietà DataBindings nella finestra delle proprietà.
    1. Selezionare il controllo Web Forms Viewer nella scheda Progettazione di WebForm1.aspx. Nella finestra Proprietà fare clic sul pulsante con il segno più (+) a destra della proprietà DataBindings Nel riquadro sinistro, in Proprietà associabili, selezionare ReportSource. Nel riquadro inferiore a destra, fare clic su Espressione di associazione personalizzata e immettere il nome di percorso completo "c:\\Reports\\My report.rpt" (comprese le virgolette).
    2. Nel file di origine per WebForm1.aspx, dopo la chiamata a InitializeComponent(), aggiungere una chiamata a CrystalReportViewer1.DataBind().
  • In alternativa, nella visualizzazione del codice di WebForm1.aspx specificare il percorso del report:

In un progetto C++ è possibile specificare il percorso del report tramite codice.

Esempio

[Visual Basic]

CrystalReportViewer1.ReportSource = _
"C:\\Reports\\My Report.rpt"

[C#]

CrystalReportViewer1.ReportSource = 
"C:\\Reports\\My Report.rpt";

[C++]

CrystalReportViewer1->ReportSource =
"C:\\Reports\\My Report.rpt";

[VJ#]

CrystalReportViewer1.set_ReportSource( 
"C:\\Reports\\My Report.rpt");

Collegamento per oggetto report

È possibile creare un oggetto report, assegnare un report all'oggetto e collegare l'oggetto a un Web Forms Viewer. Attraverso l'oggetto report, è possibile accedere all'intero modello oggetto esposto da Crystal Reports per Visual Studio .NET. Tuttavia, se si sceglie questo metodo di collegamento, è preferibile eseguire il caching dello stato della sessione per ottenere una maggiore efficienza.

Per collegare un oggetto report al Web Forms Viewer in un'applicazione Visual Basic o C#

  1. Aggiungere un riferimento a CrystalDecisions.CrystalReports.Engine.
  2. Aprire WebForm1.aspx nell'Editor del codice.
  3. Aggiungere lo spazio dei nomi CrystalDecisions.CrystalReports.Engine a WebForm1.aspx.
  4. Dopo la chiamata a InitializeComponent(), creare un oggetto report come variabile ReportDocument pubblica, quindi utilizzare l'oggetto ReportDocument per caricare My Report.rpt e collegare l'oggetto a Web Forms Viewer.

Per collegare un oggetto report al Web Forms Viewer in un'applicazione C++

  1. Fare doppio clic su MyProject.cpp in Esplora soluzioni per aprirlo nell'Editor del codice.
  2. Aggiungere i componenti CrystalDecisions.CrystalReports.Engine.dll e CrystalDecisions.Web.dll a MyProject.cpp.
  3. Aggiungere gli spazi dei nomi CrystalDecisions.CrystalReports.Engine e CrystalDecisions.Web a MyProject.cpp.
  4. Creare un oggetto report come variabile ReportDocument e un Web Forms Viewer come variabile CrystalReportViewer. Quindi utilizzare l'oggetto ReportDocument per caricare My Report.rpt, e collegarlo a Web Forms Viewer.

Esempio

[Visual Basic]

Private Sub Page_Init _
(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Init
   'CODEGEN: Questa chiamata è richiesta dal Web 
   ' Finestra progettazione form
   'Non modificarla tramite l'editor del codice.
   InitializeComponent()

   Dim oRpt as New ReportDocument()
   oRpt.Load("C:\\Reports\\My Report.rpt")
   CrystalReportViewer1.ReportSource = oRpt
End Sub

[C#]

override protected void OnInit(EventArgs e)
{
   // CODEGEN: Questa chiamata è richiesta dal Web ASP .NET 
   //  Finestra progettazione form
   InitializeComponent();

   ReportDocument oRpt = new ReportDocument();
   oRpt.Load("c:\\Reports\\My Report.rpt");   
   CrystalReportViewer1.ReportSource = oRpt;
}

[C++]

public __gc Class MyWebClass{
public:
   CrystalReportViewer* CrystalReportViewer1;
   ReportDocument* oRpt;
   void BindReport(){
      CrystalReportViewer1 = new CrystalReportViewer();
      oRpt = new ReportDocument();
      oRpt->Load("c:\\Reports\\My Report.rpt");   
      CrystalReportViewer1->ReportSource = oRpt;
   };
};

[VJ#]

protected void OnInit(System.EventArgs e)
{
   // CODEGEN: Questa chiamata è richiesta dal Web ASP .NET 
   //  Finestra progettazione form
   InitializeComponent();

   ReportDocument oRpt = new ReportDocument();
   oRpt.Load("c:\\Reports\\My Report.rpt");   
   CrystalReportViewer1.set_ReportSource(oRpt);
}

Collegamento per componente del report non tipizzato

Si supponga di aver aggiunto un componente del report non tipizzato , reportDocument1, al Web Form e di aver caricato il componente con c:\Reports\My Report.rpt.

In un progetto Visual Basic o C# è possibile collegare tale componente non tipizzato a Web Forms Viewer tramite la finestra delle proprietà o la visualizzazione del codice di WebForm1.aspx:

  • Impostare la proprietà DataBindings nella finestra delle proprietà.

    Selezionare il controllo Web Forms Viewer nella scheda Progettazione di WebForm1.aspx. Nella finestra Proprietà fare clic sulla proprietà DataBindings. Nella finestra di dialogo DataBindings, selezionare ReportSource in Proprietà associabili. Eseguire una delle seguenti operazioni:

    1. Fare clic su Associazione semplice, e selezionare reportDocument1 in Pagina. Fare clic su OK.
    2. Oppure, fare clic su Espressione di associazione personalizzata, e inserire reportDocument1. Fare clic su

    Nel file di origine per WebForm1.aspx, dopo la chiamata a InitializeComponent() e reportDocument1.Load(), aggiungere una chiamata a DataBind().

  • In alternativa, nella visualizzazione del codice WebForm1.aspx, dopo la chiamata a InitializeComponent() e reportDocument1.Load(), specificare la proprietà ReportSource.

In un'applicazione C++ è necessario aggiungere il Web Forms Viewer e il report tramite codice

[Visual Basic]

CrystalReportViewer1.ReportSource = reportDocument1

[C#]

CrystalReportViewer1.ReportSource = reportDocument1;

[C++]

public __gc Class MyWebClass{
public:
   CrystalReportViewer* CrystalReportViewer1;
   ReportDocument* oRpt;
   void BindReport(){
      CrystalReportViewer1 = new CrystalReportViewer();
      oRpt = new ReportDocument();
      oRpt->Load("c:\\Reports\\My Report.rpt");   
      CrystalReportViewer1->ReportSource = oRpt;
   };
};

[VJ#]

CrystalReportViewer1.set_ReportSource(reportDocument1);

Scenario 2: Report locale aggiunto al progetto

Si supponga che esista una delle seguenti condizioni:

In un'applicazione Visual Basic o C#

  • Sull'host locale http://hostlocale è stato creato un progetto Applicazione Web ASP.NET MyProject.

  • È stato inserito un Web Forms Viewer, CrystalReportViewer1, nel Web Form, WebForm1.aspx, all'interno di MyProject.

  • È stato aggiunto il report, My Report.rpt, a MyProject.

    È possibile collegare My Report.rpt al Web Forms Viewer per oggetto report.

    In un'applicazione C++

  • È stato creato un progetto Managed C++, MyProject.

  • È stato aggiunto un Web Forms Viewer, CrystalReportViewer1, in MyProject.cpp all'interno di MyProject.

Collegamento per oggetto report

Per oggetto report:

In Visual Basic and C#, quando si aggiunge My Report.rpt a MyProject, la classe di report corrispondente, My_Report, viene generata automaticamente nel file di origine di My Report.rpt. È possibile collegare My Report.rpt al Web Forms Viewer assegnando l'oggetto report corrispondente alla proprietà ReportSource tramite la visualizzazione del codice relativa a WebForm1.aspx

Per i progetti C++ non viene generata automaticamente alcuna classe di report. È possibile aggiungere un report all'applicazione C++ tramite codice.

Esempio

[Visual Basic]

CrystalReportViewer1.ReportSource = new My_Report()

[C#]

CrystalReportViewer1.ReportSource = new My_Report();

[C++]

public __gc Class MyWebClass{
public:
   CrystalReportViewer* CrystalReportViewer1;
   ReportDocument* oRpt;
   void BindReport(){
      CrystalReportViewer1 = new CrystalReportViewer();
      oRpt = new ReportDocument();
      oRpt->Load("c:\\Reports\\My Report.rpt");   
      CrystalReportViewer1->ReportSource = oRpt;
   };
};

[VJ#]

CrystalReportViewer1.set_ReportSource(new My_Report());

Collegamento per componente del report con tipizzazione forte

Si supponga di aver aggiunto My Report.rpt come un componente a MyProject.

In un'applicazione Visual Basic o C#

È possibile collegare tale componente del report al Web Forms Viewer tramite la finestra delle proprietà o la visualizzazione del codice di WebForm1.aspx:

  • Selezionare il controllo Web Forms Viewer nella scheda Progettazione di WebForms1.aspx. Nella finestra Proprietà fare clic sulla proprietà DataBindings. Nella finestra di dialogo DataBindings, selezionare ReportSource in Proprietà associabili. Eseguire una delle seguenti operazioni:

    1. Fare clic su Associazione semplice, e selezionare my_Report1 in Pagina. Fare clic su
    2. Oppure, fare clic su Espressione di associazione personalizzata, e inserire my_Report1. Fare clic su

    Dopo la chiamata a InitializeComponent() nel file di origine di WebForm1.aspx, aggiungere una chiamata a CrystalReportViewer1.DataBind().

  • Oppure specificare la proprietà ReportSource tramite la visualizzazione del codice di WebForm1.aspx:

    In un'applicazione C++

    È possibile creare una propria classe di report ereditando la classe ReportDocument e aggiungere il report alla proprietà ReportSource di Web Forms Viewer.

Esempio

[Visual Basic]

CrystalReportViewer1.ReportSource = my_Report1

[C#]

CrystalReportViewer1.ReportSource = my_Report1;

[C++]

public __gc Class MyWebClass{
public:
   CrystalReportViewer* CrystalReportViewer1;
   MyReportClass* my_Report1;
   void BindReport(){
      CrystalReportViewer1 = new CrystalReportViewer();
      my_Report1= new MyReportClass();
      my_Report1->Load("c:\\Reports\\My Report.rpt");   
      CrystalReportViewer1->ReportSource = my_Report1;
   };
};

[VJ#]

CrystalReportViewer1.set_ReportSource(my_Report1);

Collegamento per componente del report di cache

Si supponga di aver aggiunto My Report.rpt come componente a MyProject e aver selezionato la memorizzazione nella cache del componente del report.

In un'applicazione Visual Basic o C#

È possibile collegare tale componente del report al Web Forms Viewer tramite la finestra delle proprietà o la visualizzazione del codice di WebForm1.aspx:

  • Selezionare il controllo Web Forms Viewer nella scheda Progettazione di WebForms1.aspx. Nella finestra Proprietà fare clic sulla proprietà DataBindings. Nella finestra di dialogo DataBindings, selezionare ReportSource in Proprietà associabili. Eseguire una delle seguenti operazioni:

    1. Fare clic su Associazione semplice, e selezionare cachedMy_Report1 in Pagina. Fare clic su
    2. Oppure, fare clic su Espressione di associazione personalizzata, e inserire cachedMy_Report1. Fare clic su
  • Specificare la proprietà ReportSource tramite la visualizzazione del codice di WebForm1.aspx.

    In un'applicazione C++

    È possibile aggiungere componenti di report all'applicazione C++ e memorizzarli nella cache solo tramite codice. Per un esempio di creazione di una classe di report con tipizzazione forte, vedere ICachedReport.

Esempio

[Visual Basic]

CrystalReportViewer1.ReportSource = cachedMy_Report1

[C#]

CrystalReportViewer1.ReportSource = cachedMy_Report1;

[C++]

public __gc Class MyWebClass{
public:
   CrystalReportViewer* CrystalReportViewer1;
   MyCachedReportClass* cachedMy_Report1;
   void BindReport(){
      CrystalReportViewer1 = new CrystalReportViewer();
      cachedMy_Report1= new MyCachedReportClass();
      cachedMy_Report1->Load("c:\\Reports\\My Report.rpt");   
      CrystalReportViewer1->ReportSource = cachedMy_Report1;
   };
};

[VJ#]

CrystalReportViewer1.set_ReportSource(cachedMy_Report1);