在 ActiveReports 中,可以設置報表中不同控件的樣式,然後把這些樣式保存到一個外部的XML文件當中,供其他報表使用。如果用戶希望同一份報表以不用的外觀分發,只需要簡單地修改樣式表單,無需逐個改變每個報表中的單個控件的字體、顏色、尺寸等。
本文中演示的是爲年度銷量統計表設置不同的皮膚樣式,我們供準備了三個皮膚樣式,以下是詳細操作步驟:
1、創建報表文件
在應用程序中創建一個名爲 rptTheme1.rdlx 的 ActiveReports 報表文件,使用的項目模板爲 ActiveReports 頁面報表,創建完成之後從 VS 的報表菜單項中選擇轉換爲連續頁面佈局(CPL)報表,將固定頁面報表轉換爲連續頁面報表。
2、打開報表資源管理器,並按照以下信息創建報表數據源
名稱: | NWind_CHS |
類型: | Micorsoft OleDb Provider |
OLE DB 提供程序: | Microsoft.Jet.OLEDB.4.0 |
服務器或文件名稱: | Data\NWind_CHS.mdb |
3、 添加數據集
在新建的 NWind_CHS 數據源上鼠標右鍵並選擇添加數據集菜單項,添加以下兩個數據集:
常規-名稱:Sales
查詢-查詢:
SELECT
類別.類別名稱,訂單.貨主地區,
SUM
(訂單明細.數量)
AS
銷售量
FROM
(( 訂單
INNERJOIN
訂單明細
ON
訂單.訂單ID = 訂單明細.訂單ID)
INNERJOIN
產品
ON
訂單明細.產品ID = 產品.產品ID)
INNERJOIN
類別
ON
產品.類別ID = 類別.類別ID
WHERE
DATEDIFF("yyyy",訂單.訂購日期,'2011-01-01') = 0
GROUPBY
類別.類別名稱,訂單.貨主地區
ORDERBY
類別.類別名稱,訂單.貨主地區
常規-名稱:SaleDetails
查詢-查詢:
SELECT
DATEPART("m",訂單.訂購日期)
AS
訂購月,類別.類別名稱,
SUM
(訂單明細.數量)
AS
銷售量
FROM
(( 訂單
INNERJOIN
訂單明細
ON
訂單.訂單ID = 訂單明細.訂單ID)
INNERJOIN
產品
ON
訂單明細.產品ID = 產品.產品ID)
INNERJOIN
類別
ON
產品.類別ID = 類別.類別ID
WHERE
DATEDIFF("yyyy",訂單.訂購日期,'2011-01-01') = 0
GROUPBY
DATEPART("m",訂單.訂購日期),類別.類別ID, 類別.類別名稱
ORDERBY
DATEPART("m",訂單.訂購日期),類別.類別ID, 類別.類別名稱
4、設計報表界面
4.1、在 GrapeCity ActiveReports 主題編輯器中創建三個主題樣式
Style1.rdlx-theme
Style2.rdlx-theme
Style3.rdlx-theme
創建完成以上主題樣式之後,爲報表指定一個主題,我們在設計時指定的主題樣式爲 Style1
4.2、創建年度各地區銷量統計表
從 Visual Studio 工具箱中將 Chart 控件添加到報表設計界面,按照以下列表設置 Chart 控件的屬性
圖表數據屬性對話框:
常規-數據集名稱: | Sales |
系列值-值: | =Sum([銷售量]) |
類別分組: | 名稱:Chart1_CategoryGroup1 分組-表達式:=[類別名稱] 標籤:=[類別名稱] |
系列分組: | 名稱:Chart1_SeriesGroup1 分組-表達式:=[貨主地區] 標籤:=[貨主地區] |
圖表外觀屬性對話框:
類型: | 圖表類型:折線圖 子類型:平滑 標題:2011年度各地區銷售量統計表 調色板: =Theme.Colors.Accent1 =Theme.Colors.Accent2 =Theme.Colors.Accent3 =Theme.Colors.Accent4 =Theme.Colors.Accent5 |
4.3、創建各地區銷量圖
從 Visual Studio 工具箱中將 Chart 控件添加到報表設計界面,按照以下列表設置 Chart 控件的屬性
圖表數據屬性對話框:
圖表 | 屬性名稱 | 屬性值 |
東北地區銷量圖 | 常規: | 數據集名稱:Sales |
| 系列值: | 值:=Sum([銷售量]) |
| 類別分組: | 名稱:Chart2_CategoryGroup1 表達式:=[類別名稱] 標籤:=[類別名稱] |
| 過濾: | 表達式:=[貨主地區] 運算符:Equal 值:東北 |
圖表外觀屬性對話框:
類型: | 圖表類型:分高圖表 |
調色板: | =Theme.Colors.Accent1 =Theme.Colors.Accent2 =Theme.Colors.Accent3 =Theme.Colors.Accent4 =Theme.Colors.Accent5 =Theme.Colors.Accent6 =Theme.Colors.Hyperlink =Theme.Colors.HyperlinkFollowed |
4.4、重複4.3操作,創建華北、華東、華南、西南四個地區的銷量圖,圖表區域在於過濾條件的值不同。
最終的設計結構如下圖:
5、在後臺代碼中動態加載用戶指定的主題樣式
GrapeCity.ActiveReports.PageReport report =new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo(Server.MapPath("../Reports/" + reportname + ".rdlx"))); report.Report.DataSources[0].DataSourceReference = ""; report.Report.DataSources[0].ConnectionProperties.DataProvider = "OLEDB"; report.Report.DataSources[0].ConnectionProperties.ConnectString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};", Server.MapPath("../Data/NWind_CHS.mdb")); report.Report.Themes.Clear(); report.Report.Themes.Add(Server.MapPath(string.Format("../Theme/Style{0}.rdlx-theme", themeid))); WebViewer1.Report = report;
6、運行程序
在線演示及源碼下載地址:
http://www.gcpowertools.com.cn/products/activereports_demo.htm