Wie man eine benutzerdefinierte Symbolleiste für Web FastReport.NET Bericht erstellt

2020-05-31

Viele Benutzer von Reportgeneratoren sind daran interessiert, Symbolleiste bei der Berichtsvorschau einzurichten. Solche Fragen erscheinen regelmäßig in Foren und Fragebögen. So wie dieser Benutzer des DevExpress Reportgenerators, der die Symbolleiste des Webberichts in ASP.Net MVC anpassen möchte.

In einigen Fällen gibt sich der Benutzer einfach damit zufrieden, unnötige Steuerelemente auszublenden. Was aber, wenn die Standard-Symbolleiste für die Berichtsüberprüfung überhaupt nicht zufriedenstellend ist?

Eine Standard-Webreport-Symbolleiste passt möglicherweise dem Benutzer in Design oder Toolkit nicht. Die einzige Lösung für diese Probleme kann darin bestehen, eine eigene Symbolleiste zu implementieren. Natürlich muss es sich nicht um ein Panel handeln, die Steuerelemente können beliebig auf der Webseite platziert werden. Wir werden einfach "die richtigen Stricke ziehen", um das gewünschte Verhalten zu erreichen. Als Beispiel sehen wir uns die Standard ASP.Net MVC-App an.

Die Web-Methode gibt eine Repräsentation des Berichts und von benutzerdefinierten Steuerelementen zurück. Wir verwenden ein statisches Objekt des Web-Reports, um es in der gesamten Anwendung manipulieren zu können. Zum Beispiel, um die Seiten umzublättern.

1
public static WebReport webReport = new WebReport();

Die Web-Methode nimmt mehrere Parameter entgegen: Exporttyp, Anzeige-Symbolleiste, Panel-Stil, Art des Übergangs zu einer anderen Seite. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
 public ActionResult Index(string ExportType,string toolbar, string page)
 {
 SetReport();//Method of the loading template into the report object
 if (ExportType != null) Export(ExportType); //Report export method
 SetPage(page); //Go to the particular report page method 
 ShowToolbar(toolbar); //Hide/display toolbar method
 webReport.Width = Unit.Percentage(100);
 webReport.Height = Unit.Percentage(100);
 ViewBag.WebReport = webReport;
 return View();
 }
 
//Upload the report object method
 private void SetReport()
 {
 string report_path = GetReportPath();
 System.Data.DataSet dataSet = new System.Data.DataSet();
 dataSet.ReadXml(report_path + "nwind.xml");
 webReport.Report.RegisterData(dataSet, "NorthWind");
 webReport.Report.Load(report_path + "Master-Detail.frx"); 
 }
 
// Go to the particular report page method 
 public void SetPage(string page)
 {
 switch (page)
 {
 case "Next":
 NextPage();
 break;
 case "Prev":
 PrevPage();
 break;
 case "First":
 FirstPage();
 break;
 case "Last":
 LastPage();
 break;
 case "Print":
 Print();
 break;
 }
 }

Diese Methode wählt im Wesentlichen die Aktion aus, je nachdem, welche Schaltfläche wir auf der Webseite anklicken. Zusätzlich zu den Aktionen zum Navigieren im Bericht gibt es eine Schaltfläche zum Drucken des Berichts. 

1
2
3
4
5
//Next page 
 public void NextPage()
 {
 webReport.NextPage();
 } 

Diese und andere Methoden der Berichtsnavigation verwenden die Standardfunktionsschaltflächen in der Symbolleiste des Berichts. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//Previous page
 public void PrevPage()
 {
 webReport.PrevPage();
 }
//First page
 public void FirstPage()
 {
 webReport.FirstPage();
 }
//Last page
 public void LastPage()
 {
 webReport.LastPage();
 }
//Print report
 public void Print()
 {
 webReport.PrintHtml();
 }

Der Berichtsdruck kann auch als PrintPDF() eingestellt werden. Dabei wird der Bericht in das pdf-Format vorexportiert. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//Report export nethod
 public void Export(string type)
 {
 switch (type)
 {
 case "pdf": 
 webReport.ExportPdf();
 break;
 case "csv":
 webReport.ExportCsv();
 break;
 case "doc":
 webReport.ExportWord2007();
 break;
 }
 }

Um das Exportformat zu bestimmen, haben wir wieder eine switch-Anweisung verwendet. Je nach gewähltem Format wird entsprechend die Exportmethode ausgeführt. 

1
2
3
4
5
6
7
8
9
10
11
//Set the path of the report folder
 private string GetReportPath()
 {
 return this.Server.MapPath("~/App_Data/");
 }
 
//Hide/display the toolbar default method
 public void ShowToolbar(string toolbar)
 {
 webReport.ShowToolbar = toolbar;
 }

Werfen wir nun einen Blick auf das Programm. Wie Sie wissen, besteht unsere Aufgabe darin, ein Druck-, Export- und Navigations-Berichts-Control zu erstellen. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
@{
 ViewBag.Title = "Home Page";
}
<div style="float:left">
 <div align="left">
 @using (Html.BeginForm("Index", "Home"))
 {
 <table>
 <tr>
 <td>
 <input id="Print" type="submit" value="Print" onclick="document.getElementById('page').value='Print'" />
 </td>
 <td>
 @Html.DropDownList("ExportType", new List<SelectListItem>()
 {
 new SelectListItem(){ Text= "PDF", Value = "pdf"},
 new SelectListItem(){ Text= "CSV", Value = "csv"},
 new SelectListItem(){ Text= "Word", Value = "doc"},
 }, "Select export type", { @onchange = "this.form.submit()" } )
 </td>
 <td>
 @Html.CheckBox("Show toolbar", true, new { @onchange = "this.form.submit()" }) Toolbar
 </td>
 <td>
 <input id="first" type="submit" value="<<" onclick="document.getElementById('page').value='First'" />
 <input id="prev" type="submit" value="<" onclick="document.getElementById('page').value='Prev'" />
 <input id="next" type="submit" value=">" onclick="document.getElementById('page').value='Next'" />
 <input id="Last" type="submit" value=">>" onclick="document.getElementById('page').value='Last'" />
 <input id="page" type="hidden" name="page">
 </td>
 </tr>
 </table>
 }
 </div>
</div>
<div>
@ViewBag.WebReport.GetHtml()
</div>

Wir haben eine Druck-Schaltfläche, eine Auswahlliste mit Exporttypen, ein Kontrollkästchen, das eine Standard-Symbolleiste verdeckt, und eine Schaltfläche für den seitenweisen Übergang (erste, vorherige, nächste und letzte Seite) hinzugefügt. Schauen wir mal, was passiert ist: 

 ASP. Net MVC Anwendung benutzerdefinierte Symbolleiste

Als Ergebnis haben wir eine eigene Symbolleiste für die Interaktion mit dem Bericht erstellt. Dadurch können wir diese Elemente in das Design der Webseite einbetten und das Standard-Panel aufgeben. In diesem Beispiel haben wir nicht die gesamte Funktionalität einer Standard-Symbolleiste implementiert, sondern nur grundlegende Funktionen. Sie können in Analogie zu dem betrachteten Beispiel leicht weitere Funktionen implementieren.

ASP.NET Customization FastReport MVC .NET Toolbar
10. Juli 2025

Firebird-Plugin in FastReport .NET erstellen und verbinden

In diesem Artikel betrachten wir die Erstellung und Verbindung des Firebird-Plugins mit FastReport .NET über den Berichtsdesigner bzw. über einen Code.
8. April 2025

Einrichten der Verbindung mit Apache Ignite in FastReport .NET

In diesem Artikel werden wir untersuchen, wie Sie eine Verbindung zu Apache Ignite in FastReport .NET konfigurieren. Sie lernen die notwendigen Schritte, um das Plugin über Code und den Berichtsdesigner zu verbinden.
8. April 2025

Konvertieren einer Microsoft Word-Datei (.docx) in eine FastReport .NET-Datei (.frx)

Ein Konverter von Microsoft Word (.docx) Format zu einem file FastReport .NET (.frx): Beschreibung und Anweisungen zur Verwendung des Tools.
Fast Reports
  • 800-985-8986 (Englisch, USA)
  • +31 97 01025-8466 (Englisch, EU)
  • +49 30 56837-3928 (Deutsch, DE)
  • +55 19 98147-8148 (Portugiesisch, BR)
  • info@fast-report.com
  • 66 Canal Center Plaza, Ste 505, Alexandria, VA 22314

© 1998-2025 Fast Reports Inc.