如何實現(xiàn)報表在線設(shè)計器和Web報表的本地化
報表的本地化是Web環(huán)境中非常重要且緊迫的一環(huán)。畢竟,你的網(wǎng)站可以由來自不同國家的人訪問。幸運的是,FastReport.Net具有很多不同語言的本地化,我們可以使用它。
讓我們看看如何在示例MVC應(yīng)用程序中執(zhí)行此操作。
首先,我們將FastReports庫連接到項目:
- FastReport;
- FastReport.Web。
由于我將在網(wǎng)站的主頁上發(fā)布報表,那么用于處理報表對象的代目將加載到HomeController中,即在Index方法中:
public ActionResult Index(string language) { WebReport webReport = new WebReport(); //create instance of WebReport object. webReport.Width = Unit.Percentage(100); //Set report width webReport.Height = Unit.Percentage(100); //Set report heigh string report_path = "J:\\Program Files (x86)\\FastReports\\FastReport.Net\\Demos\\Reports\\"; //Set reports path System.Data.DataSet dataSet = new System.Data.DataSet(); //create data set dataSet.ReadXml(report_path + "nwind.xml"); //Load xml database into dataset webReport.Report.RegisterData(dataSet, "NorthWind"); //register data source in the report webReport.Report.Load(report_path + "Simple Interactive.frx"); //load a report into WebReport object if (language == "ru") //check the language { webReport.DesignerLocale = "ru"; webReport.LocalizationFile = "~/Localization/Russian.frl"; } else { webReport.DesignerLocale = "en"; } webReport.DesignReport = true; //Enable report designer ViewBag.WebReport = webReport; //pass the report to View return View(); }
在Index方法中,我將把下拉列表中的值傳遞給索引 - 俄語和英語兩種語言之一。(原作者是來自俄羅斯的FastReport工程師,這里我們以俄語為例)
在第一行中,我們創(chuàng)建了一個WebReport對象的實例。接下來,將web報表的寬度和高度設(shè)置為100%。
在變量report_path
中寫入報表文件夾的路徑。創(chuàng)建一個數(shù)據(jù)集并將xml數(shù)據(jù)庫加載到其中。之后,我們在報表對象中注冊數(shù)據(jù)源。
現(xiàn)在將報表加載到WebReport對象中。我們檢查參數(shù)“語言”的值。如果它等于“ru”,那么我們找到設(shè)計器,并將web報表本地化設(shè)為俄語。否則,將會本地化為英語。
DesignReport屬性包括一個在線報表設(shè)計器。也就是說,我們在上面下載的報表將立即在設(shè)計器中打開。它仍然是在視圖中傳遞Web報表。
你可能已經(jīng)注意到,報表的本地化來自本地化文件夾。你可以在程序FastReport.Net的根目錄中找到具有語言環(huán)境的文件夾。將其轉(zhuǎn)移到你的項目。
另外,你需要將報表設(shè)計器添加到項目中。必須使用開發(fā)者網(wǎng)站(www.fast-report.com)客戶端面板中使用特殊的在線構(gòu)造函數(shù)構(gòu)建它。之后,你將收到設(shè)計器的檔案。將WebReportDesigner文件夾從此存檔傳送到此項目。
現(xiàn)在讓我們轉(zhuǎn)到視圖。編輯位于文件夾Views-> Home中的文件Index.cshtml:
@{ ViewBag.Title = "Home Page"; } @using (Html.BeginForm("Index","Home")) { @Html.DropDownList("Language", new List<SelectListItem>() { new SelectListItem(){ Text= "Russian", Value = "ru"}, new SelectListItem(){ Text= "English", Value = "en"} }, "Select language") <input type="submit" value="Select" /> } @ViewBag.WebReport.GetHtml()
這里我們設(shè)置頁面的標題。接下來,使用BeginForm助手來創(chuàng)建表單。其中,我們指定控制器和操作的方法。在表單中,我們創(chuàng)建了一個下拉列表,并填充了兩個元素。請注意,Language列表的名稱與Index方法中參數(shù)的名稱相同。
此外,這里有一個按鈕,我們接受選定的元素。最后,我們用@ViewBag顯示我們的報表。
在文件夾Views-> Shared中,你需要編輯文件_Layout.cshtml。為標題添加腳本和樣式:
<head> @WebReportGlobals.Scripts() @WebReportGlobals.Styles() </head>
然后,在視圖文件夾中有一個Web.config文件。給它添加命名空間:
<namespaces> <add namespace="FastReport" /> <add namespace="FastReport.Web" /> </namespaces>
在項目的根目錄,還有另一個Web.config。在其中我們添加一個處理句柄,緊隨模塊部分之后:
<modules> … </modules> <handlers> <add name="FastReportHandler" path="FastReport.Export.axd" verb="*" type="FastReport.Web.Handlers.WebExport"/> </handlers>
現(xiàn)在你可以運行該應(yīng)用程序:
選擇俄語并點擊“選擇”按鈕:
這樣我們就得到了俄語的語言環(huán)境。如果你在預(yù)覽中運行此報表,我們將在WebReport對象的工具欄中看到俄語:
就這樣,我們完成了報表的本地化。我從列表中選擇了語言,展示了最簡單的本地化實現(xiàn)。要自動選擇語言環(huán)境,可以使用Request.UserLanguages屬性定義用戶瀏覽器的語言。
產(chǎn)品介紹 | 下載試用 | 優(yōu)惠活動 | 在線客服 | 聯(lián)系Elyn
推薦閱讀
- FastReport VCL報表控件開發(fā)者手冊
- FastReport Online Designer中文手冊
- Fastreport.Net教程2016
- Fastreport.Net用戶手冊
- FastReport.Net教程2017(持續(xù)更新中···)
- FastReport Online Designer教程2017(持續(xù)更新中···)
- 報表教程2017(持續(xù)更新中···)
- FastReport.Net v2018.1版本更新已經(jīng)發(fā)布!