報(bào)告生成器FastReport .NET功能指南:為Web FastReport.Net報(bào)表創(chuàng)建自定義工具欄
報(bào)表生成器FastReport .NET是適用于.NET Core 3,ASP.NET,MVC和Windows窗體的全功能報(bào)告庫。使用FastReport .NET,您可以創(chuàng)建獨(dú)立于應(yīng)用程序的.NET報(bào)告。
近日,F(xiàn)astReport .Net升級到v2020.3版,在此版本中,添加了瑞士QR碼,允許配置打印機(jī)托盤以打印報(bào)告的最后一頁,不再支持.NET Framework 2.0,同時修復(fù)了多個Bug問題,感興趣的朋友可點(diǎn)擊下方按鈕下載最新版。
許多報(bào)表生成器的用戶在查看報(bào)表時對設(shè)置工具欄感興趣。這些問題定期出現(xiàn)在論壇和調(diào)查表上。
在某些情況下,用戶只會滿足于隱藏不必要的控件。但是,如果標(biāo)準(zhǔn)的報(bào)告審查工具欄完全不能滿足要求呢?
標(biāo)準(zhǔn)的web報(bào)表工具欄在設(shè)計(jì)或工具箱上可能不適合用戶。解決這些問題的唯一辦法可能是實(shí)現(xiàn)自己的工具欄。當(dāng)然,它不必是一個面板,控件可以按您的喜好放置在web頁面上。我們只要“把報(bào)告拉到正確的地方”,就可以得到我們需要的行為。作為一個例子,我們來看看標(biāo)準(zhǔn)的ASP.Net MVC應(yīng)用程序。
Web方法通過自定義控件返回報(bào)告的表示形式。使用Web報(bào)表的靜態(tài)對象,以便能夠在整個應(yīng)用程序中對其進(jìn)行操作。例如,翻頁。
public static WebReport webReport = new WebReport();
web方法接受幾個參數(shù):導(dǎo)出類型、顯示工具欄、面板樣式、轉(zhuǎn)換到另一個頁面的類型。
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; } }
實(shí)際上,此方法根據(jù)我們在網(wǎng)頁上單擊哪個按鈕來選擇操作。除了瀏覽報(bào)告的操作外,還有一個按鈕可以打印報(bào)告。
//Next page public void NextPage() { webReport.NextPage(); }
這些和其他報(bào)表導(dǎo)航方法使用報(bào)表工具欄上的標(biāo)準(zhǔn)功能按鈕。
//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(); }
報(bào)表打印也可以設(shè)置為PrintPDF()。同時,報(bào)告將預(yù)先導(dǎo)出為pdf格式。
//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; } }
為了確定導(dǎo)出格式,再次使用switch語句。根據(jù)所選擇的格式,執(zhí)行與導(dǎo)出方法對應(yīng)的操作。
//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; }
現(xiàn)在讓我們看一下程序。如您所知,我們的任務(wù)是創(chuàng)建一個打印、導(dǎo)出和導(dǎo)航報(bào)告控件。
@{ 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>
我們添加了打印按鈕、帶有導(dǎo)出類型的下拉列表、隱藏標(biāo)準(zhǔn)工具欄的復(fù)選框和逐頁轉(zhuǎn)換按鈕(第一頁、前一頁、下一頁和最后一頁)。讓我們看看發(fā)生了什么:
因此,我們創(chuàng)建了自己的工具欄來與報(bào)表交互。這將允許我們將這些元素嵌入到web頁面的設(shè)計(jì)中,并放棄標(biāo)準(zhǔn)面板。在本例中,我們沒有實(shí)現(xiàn)標(biāo)準(zhǔn)工具欄的所有功能,而只實(shí)現(xiàn)了基本特性。您可以通過類比所考慮的示例輕松實(shí)現(xiàn)其他特性。
還想要更多嗎?您可以點(diǎn)擊閱讀【FastReport 報(bào)表2019最新資源盤點(diǎn)】,查找需要的教程資源。如果您有任何疑問或需求,請隨時加入FastReport技術(shù)交流群(783996712),我們很高興為您提供查詢和咨詢。