原創(chuàng)|使用教程|編輯:我只采一朵|2017-12-19 10:50:54.000|閱讀 841 次
概述:我們已經(jīng)講解過很多網(wǎng)頁(yè)報(bào)表的開發(fā)技巧了,今天我們講一講如何創(chuàng)建交互式矩陣報(bào)表(也可以稱為交叉報(bào)表)。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
我們已經(jīng)講解過很多網(wǎng)頁(yè)報(bào)表的開發(fā)技巧了,今天我們講一講如何創(chuàng)建交互式矩陣報(bào)表,或者說交叉報(bào)表。我們將使用FastReport.Net的xml數(shù)據(jù)庫(kù)。選擇好表格:
添加矩陣(Matrix)對(duì)象到數(shù)據(jù)帶區(qū):
現(xiàn)在在數(shù)據(jù)窗口中打開“訂單明細(xì)”表。你將看到相關(guān)聯(lián)的表:產(chǎn)品與訂單。打開訂單。它又連接著一張表——員工。我們打開它并將FirstName字段拖到列頭:
雙擊添加的字段。讓我們將LastName字段添加到FirstName字段,以顯示員工的全名。所以,整個(gè)字段組成如下所示:
[Order Details.Orders.Employees.FirstName]+" "+[Order Details.Orders.Employees.LastName]
這大幅擴(kuò)展了列頭。讓我們禁用“自動(dòng)寬度”功能。要做到這點(diǎn),請(qǐng)右鍵單擊Matrix對(duì)象。然后在上下文菜單中勾選掉“自動(dòng)尺寸”:
現(xiàn)在你可以自由調(diào)整行和列的大小。
將Photo字段拖到列頭。調(diào)整單元格大小以適應(yīng)添加的字段。
現(xiàn)在找到在訂單明細(xì)表中找到關(guān)聯(lián)的產(chǎn)品表。打開它。它也有一張關(guān)聯(lián)的類別表。將CategoryName字段從類別表中拖動(dòng)到行頭,并將Picture字段放到同一個(gè)單元格。
現(xiàn)在,將“單價(jià)”字段從訂單明細(xì)表拖到數(shù)據(jù)單元格中。編輯添加的字段。你需要查找三個(gè)字段的產(chǎn)品:?jiǎn)蝺r(jià),數(shù)量和單折扣。因此,我們找到真正的銷售額:
[Order Details.UnitPrice] * [Order Details.Quantity] *(decimal)(1 - [Order Details.Discount])
矩陣幾乎準(zhǔn)備就緒,它還有待選擇樣式。右鍵單擊矩陣,然后選擇“樣式”。例如,橙色。這就已經(jīng)很漂亮了:
在單獨(dú)的頁(yè)面上創(chuàng)建詳細(xì)的報(bào)表。在報(bào)表中添加第二頁(yè)。
將Order Details.OrderDate字段添加到數(shù)據(jù)帶區(qū)。接下來,我們將Order Detail.Products.ProductName字段放在它旁邊。同時(shí)拖動(dòng)字段:Order Detail.UnitPrice、Order Detail.Quantity和Order Detail.Discount。
要顯示所需的員工的數(shù)據(jù),你需要過濾表格。我們將傳輸數(shù)據(jù)以比較第一頁(yè)和第二頁(yè)。為此,請(qǐng)?jiān)诘诙?yè)中創(chuàng)建參數(shù)。針對(duì)這個(gè)選項(xiàng),我們創(chuàng)建了兩個(gè)子參數(shù),都是字符串類型:
現(xiàn)在為數(shù)據(jù)帶添加一個(gè)過濾器。雙擊并選擇“過濾器”選項(xiàng)卡:
[Order Details.Orders.Employees.FirstName] + " " + [Order Details.Orders.Employees.LastName] == [Parameters.Employee] && [Order Details.Products.Categories.CategoryName] == [Parameters.Category]
在這里,我們比較員工姓名與參數(shù),以及類別名稱與參數(shù)。
我們?yōu)樵敿?xì)報(bào)表添加一個(gè)標(biāo)題:
[Parameters.Employee] order's.
最終,模板如下:
Tab Report page:我們回到第一頁(yè)。選擇矩陣的數(shù)據(jù)字段。在屬性查看器中,我們找到“超鏈接”并打開超鏈接編輯器。在報(bào)表頁(yè)面:
選擇第二頁(yè)和參數(shù)“Parameters”,子參數(shù)的值將被自動(dòng)插入。
報(bào)表已經(jīng)準(zhǔn)備完畢。我們保存它。
現(xiàn)在創(chuàng)建一個(gè)Web應(yīng)用程序,我將使用ASP.Net MVC項(xiàng)目。
在“參考”中添加對(duì)FastReport.dll和FastReport.Web.dll庫(kù)的引用。
在Controllers文件夾中,找到文件HomeController.cs。這是起始頁(yè)面的控制器。在這里,我們將使用報(bào)表對(duì)象。
我們添加缺少的庫(kù):
using FastReport.Web; using System.Web.UI.WebControls;
添加負(fù)責(zé)起始頁(yè)面的Index方法的代碼:
public ActionResult Index() { WebReport webReport = new WebReport(); //create the instance of the WebReport. webReport.Width = Unit.Percentage(100); //set the webReport object width 100% webReport.Height = Unit.Percentage(100); //set the webReport object heigh 100% string report_path = "J:\\Program Files (x86)\\FastReports\\FastReport.Net\\Demos\\Reports\\"; //reports folder System.Data.DataSet dataSet = new System.Data.DataSet(); //create a dataset dataSet.ReadXml(report_path + "nwind.xml"); //load the xml db webReport.Report.RegisterData(dataSet, "NorthWind"); //register db in thr report webReport.TabPosition = TabPosition.Hidden; //hide the detail reports tabs webReport.ShowBackButton = true;// show back button ViewBag.WebReport = webReport; //pass the web report to View return View(); }
這里有兩個(gè)有趣的選項(xiàng):TabPosition和ShowBackButton。第一個(gè)負(fù)責(zé)顯示工具欄上的報(bào)表標(biāo)簽。我們已經(jīng)隱藏了標(biāo)簽。第二個(gè)選項(xiàng)設(shè)置“返回”按鈕。它可以讓你回到以前的報(bào)表。
現(xiàn)在我們將在視圖中顯示報(bào)表。我們打開index.cshtml文件(Views-> Home文件夾)進(jìn)行編輯。
設(shè)置頁(yè)面標(biāo)題并顯示網(wǎng)頁(yè)報(bào)表:
@{ ViewBag.Title = "Home Page"; } @ViewBag.WebReport.GetHtml()
在_Layout.cshtml文件的<head>
部分添加腳本和樣式:
<head> @WebReportGlobals.Scripts() @WebReportGlobals.Styles() </head>
在“視圖”文件夾中的Web.config文件中添加命名空間。
<namespaces> <add namespace="FastReport" /> <add namespace="FastReport.Web" /> </namespaces>
添加位于項(xiàng)目根目錄的處理句柄Web.config文件:
<system.webServer> <handlers> <add name="FastReportHandler" path="FastReport.Export.axd" verb="*" type="FastReport.Web.Handlers.WebExport"/> </handlers> </system.webServer>
運(yùn)行應(yīng)用程序。我們的矩陣報(bào)表大概長(zhǎng)這樣:
點(diǎn)擊任何數(shù)據(jù)單元的類別總數(shù)。我們看到有關(guān)相關(guān)人員和類別的詳細(xì)報(bào)表:
詳細(xì)報(bào)表顯示此員工從所選類別中發(fā)出的所有訂單。
現(xiàn)在我們可以為網(wǎng)頁(yè)頁(yè)面創(chuàng)建交互式矩陣了,技能樹上又點(diǎn)亮了一個(gè)新技能。
產(chǎn)品介紹 | 下載試用 | 優(yōu)惠活動(dòng) | | 聯(lián)系Elyn
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn