• <menu id="w2i4a"></menu>
  • logo FastReport-web報(bào)表開發(fā)系列教程(持續(xù)更新中)
    文檔首頁>>FastReport-web報(bào)表開發(fā)系列教程(持續(xù)更新中)>>如何在一個(gè)WebReport對象中加入多個(gè)報(bào)表

    如何在一個(gè)WebReport對象中加入多個(gè)報(bào)表


    FastReport.Net中的Web報(bào)表發(fā)展迅猛,它廣受歡迎,并且很符合現(xiàn)在開發(fā)潮流和趨勢。而最近它有了一個(gè)新的功能——標(biāo)簽,即允許你在網(wǎng)頁報(bào)表工具欄上創(chuàng)建標(biāo)簽。這些標(biāo)簽允許你在同一個(gè)窗口中打開其他報(bào)表。這樣的解決方案可以方便地輸出一系列相似主題或相關(guān)背景的報(bào)表。它看起來長這樣:

    如何在一個(gè)WebReport對象中加入多個(gè)報(bào)表

    標(biāo)簽呈現(xiàn)為按鈕樣式。當(dāng)選擇標(biāo)簽時(shí),我們可以在同一個(gè)窗口中運(yùn)行報(bào)表。也就是說,現(xiàn)在不需要每個(gè)報(bào)表都單獨(dú)顯示在不同的WebReport對象中。這將有助于節(jié)省頁面空間,并避免網(wǎng)站擁堵。

    我們來看一個(gè)這個(gè)如何實(shí)現(xiàn)該功能的例子。我使用的是MVC web項(xiàng)目。

    我們將FastReport庫添加到項(xiàng)目中:

    · FastReport.dll;

    · FastReport.Web.dll。

    你可以在FastReport.Net應(yīng)用程序的文件夾中找到它們。

    在控制器中主頁創(chuàng)建:報(bào)表對象、數(shù)據(jù)源和標(biāo)簽的實(shí)例??偠灾?,這里所有的邏輯。

    然后對庫作出聲明:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using FastReport.Web;
    using System.Web.UI.WebControls;

    對于Index方法,編寫下面的代碼:

    public ActionResult Index()
     {
     string report_path = "C:\\Program Files (x86)\\FastReports\\FastReport.Net\\Demos\\Reports\\"; //Report path
     System.Data.DataSet dataSet = new System.Data.DataSet(); //Create DataSet instance
     dataSet.ReadXml(report_path + "nwind.xml"); //Read XML databse
     WebReport webReport = new WebReport(); //Create webReport instance
     webReport.Width = Unit.Percentage(100); //Set the webReport object width 100%
     webReport.Height = Unit.Percentage(100); //Set the webReport object heigh 100%
     webReport.SinglePage = true; //Enable SinglePage mode
     webReport.Report.RegisterData(dataSet, "NorthWind"); //Register data source in the webReport object
     webReport.Report.Load(report_path + "Simple List.frx"); //Load a report into the webReport object
     webReport.CurrentTab.Name = "Simple List"; //Set the current tab name
     Report report2 = new Report(); //Create a Report instance which will be displayed in the second tab
     report2.RegisterData(dataSet, "NorthWind"); //Register data source in the report object
     report2.Load(report_path + "Labels.frx"); //Load a report into the report object
     webReport.AddTab(report2, "Labels").Properties.SinglePage=true; //Add web tab in the webReport object. Pass as parameters report object and tab name. Enable SinglePage mode for the tab.
     Report report3 = new Report(); //Create a Report instance which will be displayed in the third tab
     report3.RegisterData(dataSet, "NorthWind");//Register data source in the report object
     report3.Load(report_path + "Master-Detail.frx");//Load a report into the report object
     webReport.AddTab(report3, "Master-Detail");//Add web tab in the webReport object. Pass as parameters report object and tab name.
     webReport.TabPosition = TabPosition.InsideToolbar;//Set the property TabPosition
     ViewBag.WebReport = webReport; //Set the ViewBag as webReport
     return View();
     }

    還有一個(gè)有意思的屬性:

    webReport.ShowTabClos??eButton

    如果將其設(shè)置為true,則標(biāo)簽上將會(huì)顯示一個(gè)“X”,可以用來刪除標(biāo)簽。

    這個(gè)標(biāo)簽在交互式報(bào)表中非常有用,標(biāo)簽將被動(dòng)態(tài)創(chuàng)建并包含詳細(xì)的報(bào)表。如果不需要某個(gè)報(bào)表,你就可以關(guān)閉它的標(biāo)簽。然后,如有必要,你可以再次生成標(biāo)簽。

    上面我們講解了如何創(chuàng)建標(biāo)簽,向他們發(fā)送報(bào)表。我們使用的方法是:

    public ReportTab AddTab(Report report, string name);

    我們將報(bào)表對象和標(biāo)簽的名稱作為多個(gè)參數(shù)傳遞。然而,你也可以使用一個(gè)參數(shù)搞定:

    public ReportTab AddTab(Report report);

    我們只傳遞報(bào)表對象。標(biāo)簽名稱將自動(dòng)生成。這將會(huì)作為標(biāo)簽編號。

    你還可以將已建好的報(bào)表發(fā)送到web報(bào)表的標(biāo)簽中:

    public ReportTab AddTab(Report report, string name, bool reportDone);

    在這里,我們提交一個(gè)報(bào)表、一個(gè)標(biāo)簽名稱和一個(gè)屬性,指出報(bào)表是否應(yīng)該預(yù)先建立。你可以將已經(jīng)構(gòu)建好的報(bào)表文件上傳到報(bào)表對象中,并將最后一個(gè)參數(shù)設(shè)置為true。然后報(bào)表將從指定的fpx文件中加載。

    看起來差不多會(huì)是這個(gè)樣子:

    Report report2 = new Report(); //Create a Report instance which will be displayed in the second tab
     report2.RegisterData(dataSet, "NorthWind"); //Register data source in the report object
     report2.Load(report_path + "Labels.frx"); //Load a report into the report object
     report2.Prepare();//Prepare the report
    string s = this.Server.MapPath("~/App_Data/Prepared.fpx");//Set the location to save prepared report
     report2.SavePrepared(s);//Save prepared report
     
    Report firstReport = new Report();//Create instance of Report object
     firstReport.LoadPrepared(s);//Upload prepared report to the Report object
     webReport.AddTab(firstReport, "First tab", true);//Add the tab to the WebReport toolbar

    我展示了如何將準(zhǔn)備好的報(bào)表保存到文件中,然后加載它并在“Web報(bào)表”標(biāo)簽中使用它。

    我們切換到視圖。在Views-> Home文件夾中,打開Index.cshtml文件。

    所有的頁面代碼由以下四行組成:

    @{
     ViewBag.Title = "Home Page";
    }
    @ViewBag.WebReport.GetHtml()

    最后一行是報(bào)表輸出。主控制器會(huì)向頁面發(fā)送一個(gè)報(bào)表。

    在視圖_Layout.cshtml(在Views - >Shared文件夾中)的初始化中為Web報(bào)表添加腳本:

    <head>
    …
    @WebReportGlobals.Scripts()
    @WebReportGlobals.Styles() 
    …
    </head>

    編輯位于Views文件夾中的Web.config,添加命名空間:

     <namespaces>
    …
     <add namespace="FastReport" />
     <add namespace="FastReport.Web" />
     </namespaces>

    編輯位于項(xiàng)目根目錄中的Web.config,添加處理程序:

     <handlers>
     …
     <add name="FastReportHandler" path="FastReport.Export.axd" verb="*" type="FastReport.Web.Handlers.WebExport"/>
     </handlers>

    如何在一個(gè)WebReport對象中加入多個(gè)報(bào)表

    毫無疑問,在Web報(bào)表中添加標(biāo)簽的新功能是非常實(shí)用的,并且是符合用戶需求的。Web報(bào)表的功能正在逐漸增加。在不久的將來,Web報(bào)表將變得絲毫不遜色于桌面(desktop)報(bào)表。

    產(chǎn)品介紹 下載試用 | 優(yōu)惠活動(dòng) | 在線客服 | 聯(lián)系Elyn

     

    推薦閱讀

    FastReport 正版授權(quán) 年終促銷6.5折
    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();