分享懒人张RDLC报表(四)
來自懶人張:RDLC報表(四)
??????? RDLC報表中有一個概念叫數(shù)據(jù)區(qū)域(Data Region),數(shù)據(jù)區(qū)域是數(shù)據(jù)綁定的報表項目,在數(shù)據(jù)區(qū)域中可以顯示來自數(shù)據(jù)集的多行數(shù)據(jù)。RDLC報表設計器中的數(shù)據(jù)區(qū)域包含控件面板上的一系列控 件:List、Table、Matrix、Chart,如圖所示,
??????? List控件的用處在于這是一個在其中可以自由安排像TextBox、Image等控件;Chart控件用于顯示圖表,和Excel中的圖表比較相似。這篇隨筆不會涉及到這兩個控件,主要講一下Table和Matrix兩個控件。
??????? 先來看Table控件。Table控件有多個部分組成,如標題行(header)、表尾(footer)、數(shù)據(jù)行(detailed rows)、分組表頭(group header)、分組表尾(group footer)等,如圖所示,
??????? 之所以設計這樣一個控件,我想Microsoft一定是在簡化報表的設計:
??????? 在這個控件未出現(xiàn)之前,我們看一下一個具有heaer、detailed rows和帶統(tǒng)計信息的footer的報表時如何實現(xiàn)的。首先,這個報表需要顯示報表頁眉、主體和報表頁腳三個部分,然后在報表頁眉中拖曳進一系列 Label形成表格的標題行,接著在主體部分拖曳進一系列TextBox用于顯示數(shù)據(jù)行,并在報表頁腳中拖曳進一系列Label或TextBox用于顯示 統(tǒng)計信息;要命的是,這些Label或TextBox需要在某個方向上進行對齊,控件寬度的調(diào)節(jié)也非常麻煩,如果需要顯示表格線,那么沒辦法,需要使用 Line控件手工畫,這是非常麻煩的一件差事,相信沒人會喜歡用這么麻煩的方法來設計這么一個簡單的報表。
??????? 現(xiàn)在,Microsoft推出了Table控件,你需要做的只是確定表格的列數(shù)(因為表格的列數(shù)需要是固定的),然后將字段從Data Sources面板中拖曳到Table控件的數(shù)據(jù)行中就可以了,報表設計器會自動為你生成標題行中的標題信息;至于footer中的統(tǒng)計信息 Microsoft甚至為我們設計了一個表達式生成器,使用起來非常簡便;列寬可以通過拖曳來調(diào)整,表格線可以通過設置Table控件的屬性來完成。
??????? 是的,一切就是這么簡單!這也很可能是為什么你在Visual Studio 2005的報表設計器中找不到報表頁眉和報表頁腳的原因,只有頁面頁眉(page header)和頁面頁腳(page footer)就足夠了!
??????? 當然,可能報表中也需要不是像表格這么整齊排列的數(shù)據(jù)區(qū)域,這時候就需要用到List控件了。
??????? 在實際應用中,發(fā)現(xiàn)一個表格控件可以具有零個、一個或多個header或footer,甚至可以沒有detailed rows,這樣的表格控件有什么作用呢?我們知道detailed rows是用來顯示多行數(shù)據(jù)的,而heaer或footer都可以用來顯示sum、count等統(tǒng)計信息。假如我們的數(shù)據(jù)集中同時具有主子表(如通過 Inner Join獲得的一個查詢)的信息,而這時候我們需要將主報表的信息單獨顯示出來使整個報表形成一個主子表的樣式,那么我們就可以用到?jīng)]有detailed rows的Table控件了,為header或footer中的單元格指定First(Fields!字段名稱.Value, "數(shù)據(jù)源名稱")就可以了,這樣至少減少了我們排列這些字段信息的煩惱。也就是說,Table控件是非常靈活的。CodeProject上有一篇文章 One to Many Reports with VS.NET 2005 (2.0) Report Designer(http://www.codeproject.com/dotnet/1tomanyreports_vsnet2005.asp)即是用這種主子數(shù)據(jù)集顯示的主子報表,但是個人覺得不如上面描述的方法來的簡單,頂多給報表增加一個可以標識主記錄的參數(shù)而已。當然,正兒八經(jīng)的主子報表還是需要借助SubReport控件來實現(xiàn)。
??????? 再來看一下Matrix控件,這個控件可以看作是Microsoft的又一個創(chuàng)新,以前的報表中可能會有交叉表(crosstab),但Matrix控件 反映的不只是一個交叉表,還可以看作是一個帶鉆取功能的數(shù)據(jù)透視表(pivot table)。Matrix控件由以下部分組成:
?
??????? 如果由我們自己使用一個普通的數(shù)據(jù)集來繪制一個crosstab,那會是一個非常麻煩的工作,我們需要:為數(shù)據(jù)透視報表設置行標題;計算可能的列標題數(shù)量 并設置列標題,根據(jù)行標題和列標題在數(shù)據(jù)集中循環(huán)查詢由當前行標題和列標題決定的值,整個過程的計算量就夠受的了。作為被Microsoft封裝過的一個 控件,Matrix控件顯然不需要這么麻煩,簡單的拖曳操作并設置其屬性就可以了。當然,在報表中使用交叉表最重要的一點是最終顯示的結(jié)果必須是有意義 的。
??????? 需要注意的是,當包含Matrix控件的報表導出到Excel文件中以后,即使是未顯示的帶有鉆取標志的區(qū)域也將被顯示出來,可能你會有這樣的疑問:既然 是數(shù)據(jù)透視表,為什么在Excel中不能顯示成折疊的樣式呢?這是因為報表的導出功能是并不依賴于Excel的。
轉(zhuǎn)載于:https://www.cnblogs.com/JuneZhang/archive/2013/01/10/2855094.html
總結(jié)
以上是生活随笔為你收集整理的分享懒人张RDLC报表(四)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 软件开发人员该如何深入理解自己的代码
- 下一篇: packed record与record