2009年11月8日 星期日

.NET Client-Side Report List (清單)

清單其實就是資料表的延伸運用,在清單中可以自由排列【文字方塊】、【影像】、【圖表】等等元件,資料呈現的時候會跟資料表相同,以逐筆呈現的方式來呈現資料,但資料個排版方式則是看在清單中的元件如何擺設所決定。底下是清單於設計畫面中的圖示呈現


請注意,清單元件在設計畫面中的呈現與矩形幾乎ㄧ樣 ,我個人會習慣觀看屬性列表,已確定所點選之元件是否為清單元件,如下圖所示

清單方塊適合用來列印格式化的詳細資料列表,何謂格式化的詳細資料列表呢?例如個人的證書,成績單等等,簡言之我會稱它叫做針對單一筆資料的詳細描述。ㄧ般我們使用資料表會因為欄位太多,而讓排版的版面太寬,資料表適合用於想要觀看資料跟資料之間的差異(因為相同的資料再同一個欄位底下),而清單則是針對單一筆資料的詳細描述,不同的資料列會呈現在不同的清單列表中,我們先使用一個例子來說明,於我們剛剛所設計的清單方塊中,加入底下支援字方塊以及資料欄組成的文字方塊元件,如下

畫面中,文字之描述性欄位【職稱】、【姓名】、【生日】、【地址】等是使用文字方塊拖曳進清單中後,直接輸入即可,而描述性欄位右邊之資料欄位是使用【報表資料來源】中(請參考.NET Client-Side Report)的資料欄位拖曳進入後所呈現之結果,其實這些資料欄位亦是由TextBox文字欄位所組成,以拖曳方式組要是為了讓Visual Studio能夠將該RDLC檔所參考之Strongly Typed Datatable加入其報表定義檔中,最下面的一條直線是使用【折線圖】元件所繪製,在這裡使用是為了區分每筆資料,接下來依照如.NET Client-Side Report相同的步驟將資料表及頁面連結設定完畢後,我們觀看此次設計的結果如下


由上圖得知,每一筆資料列中的資料,皆以清單中所設計之Layout(版面)呈現,所以我習慣稱清單元件為針對單一資料的詳細描述,如此清單報表有列印之需求,且想針對每一筆資料分頁列印,則可以使用矩形元件來設定分頁功能,可於【折線圖】元件下面置入一個【矩形】元件,並設定該矩形元件的屬性PageBreakAtEnd=True,則資料會以每一筆為單位分頁,如下圖


我們發現其實於ReportViewer元件中,並無分頁現象,因為頁面數還是2頁,與原本ㄧ樣,我想這可能是微軟的bug,不過試著將它匯出pdf檔之後發現,其實會出之後的pdf檔是有分頁的

如上圖所示共10頁,不過其實資料只有9頁而已,這是因為我們設定的屬性PageBreakAtEnd=True,所以是因為最後ㄧ筆資料還是分了一頁的原因。

結論: 如果使用資料表呈現的格式覺得太簡單的話,可以考慮改採清單的方式來設計,但是使用清單個方式,在頁面的設計上需耗費較大的精力,有好有壞。最後我想要表達的是請將【資料表】與【清單】視為相同輸的入資料不同的輸出格式的元件,以資料的處理上,兩種元件的處理方式是ㄧ樣的。

沒有留言: