本文將介紹自訂報表中矩陣控制項的資料行排列順序,方法有很多種,本文只是介紹其中一種可能的方式,若您有不同做法歡迎提出來交流。
問題描述
今天在MSDN論壇上看到有網友問到,想要在報表中使用矩陣控制項來呈現銷售數量與金額,並依照星期來排序呈現。
重現步驟
首先以下列T-SQL指令碼來建立測試資料。
create table Summary
(
Id int identity primary key,
SellDate nchar(2),
Amount int,
Total int
)
insert into Summary values
(N'週三',10,1000),
(N'週五',99,3000),
(N'週日',76,4000),
(N'週一',84,5000),
(N'週三',11,13000),
(N'週五',56,13000),
(N'週日',35,11000),
(N'週二',78,12000),
(N'週四',95,13000),
(N'週六',65,15000),
(N'週三',45,16000),
(N'週五',74,17000),
(N'週日',36,18000),
(N'週一',96,19600),
(N'週三',85,18500)
接著使用Visual Studio 2013建立報表專案,專案開啟後建立新的報表並從工具箱拖曳一個矩陣控制項制報表本體,此時會自動彈出資料集屬性視窗,輸入可以連接到上述測試資料的連線字串及T-SQL查詢語句後按OK。
在Columns文字方塊選擇SellDate資料行。
在Data文字方塊選擇Amount資料行。
於資料列上方按滑鼠右鍵選擇【Insert Row > Outside Group Below】來插入新的資料列。
於新增的資料列的資料行群組中加入Total資料行,
設定完畢之後於表頭加入星期、銷售數量及銷售金額等文字。
點選Preview來瀏覽報表執行結果,會發現星期資料行未依照週一至週日的次序來排序,週四會出現在週日之後。
要解決這個問題的方法很多,其中一個是調整資料行群組的排序方式,請點選Column Groups視窗的SellDate資料行右方的向下箭頭後選擇Group Properties。
在Sorting頁籤上點選Sort by資料行(SellDate)右方的運算式圖示。
輸入下列VB.NET指令碼來重新指定來列順序。
=Switch(Fields!SellDate.Value="週一",1
,Fields!SellDate.Value="週二",2
,Fields!SellDate.Value="週三",3
,Fields!SellDate.Value="週四",4
,Fields!SellDate.Value="週五",5
,Fields!SellDate.Value="週六",6
,Fields!SellDate.Value="週日",7)
就可以看到資料行週四已經回到正確的位置。