打印水晶报表
我們?cè)谌粘I钪谐3?huì)打印很多東西,所以我打算講一下是怎么打印水晶報(bào)表的。
打印水晶報(bào)表其實(shí)和導(dǎo)出差不多,只是有一點(diǎn)不同。打印也用到了多條件查詢,我們也要把數(shù)據(jù)處理一下。
獲取查詢條件
判斷數(shù)據(jù)不能為或undefined,然后賦值。
打開(kāi)下載窗口,拼接查詢到的數(shù)據(jù)到下載路徑。
這樣視圖的部分就寫(xiě)完了,控制器那邊我們先創(chuàng)建一個(gè)數(shù)據(jù)源,創(chuàng)建文件夾,然后添加新建項(xiàng)。在打開(kāi)的窗口的左邊選擇數(shù)據(jù),之后在右邊選擇數(shù)據(jù)集,
改名,然后添加。
打開(kāi)我們新建的那個(gè)東西,右鍵,我們有兩種添加數(shù)據(jù)源的方法,一種是和數(shù)據(jù)庫(kù)連接。另一種是自己創(chuàng)建數(shù)據(jù)表。在這里我們選擇第二個(gè)DataTable(D),因?yàn)槲业臄?shù)據(jù)庫(kù)沒(méi)有我要的表,所以我們要自己創(chuàng)建。添加了之后我們要給表一個(gè)名字,然后添加列,添加完列之后我們?cè)诹械哪抢镉益I,屬性,這里很重要,每個(gè)字段的數(shù)據(jù)類型都要和數(shù)據(jù)庫(kù)的一樣,要不然會(huì)導(dǎo)不進(jìn)數(shù)據(jù)的。
搞完了之后我們要安裝CrystalReportViewer才會(huì)有我下面選中的那個(gè)選項(xiàng)。
同樣改名,添加。然后它就會(huì)彈出一個(gè)窗口,我們選擇一個(gè)空白的報(bào)表,好了后我們?cè)谧筮叺臄?shù)據(jù)庫(kù)字段那里右鍵,然后選中自己創(chuàng)建的那張表。
確定了之后就是設(shè)計(jì)模板,這我就不說(shuō)了。我們現(xiàn)在要寫(xiě)控制器那里了。
先寫(xiě)多條件查詢,然后篩選(這里不說(shuō)了)
將查詢出來(lái)的數(shù)據(jù)轉(zhuǎn)化為DataTable的格式,然后下面又是打印水晶報(bào)表的固定寫(xiě)法了。
1、 實(shí)例化數(shù)據(jù)集
2、 把數(shù)據(jù)放入數(shù)據(jù)集中自己創(chuàng)建的那個(gè)表格
3、 實(shí)例化數(shù)據(jù)報(bào)表
4、 獲取報(bào)表的路徑(自己設(shè)計(jì)的那個(gè)模板)
5、 將報(bào)表加載到模板中
6、 設(shè)置報(bào)表的數(shù)據(jù)源
7、 將報(bào)表轉(zhuǎn)化為文件流輸出
最后返回文件到頁(yè)面。
由于上面用到了LINQToDataTable這個(gè)方法,所以我們要寫(xiě)一下,不過(guò)也是固定的寫(xiě)法,它主要是把我們查詢出來(lái)的數(shù)據(jù)傳到這個(gè)方法里面,就會(huì)返回DataTable的格式。
下面看下這個(gè)方法的代碼:
代碼就是這樣了,下次你們用的時(shí)候直接復(fù)制過(guò)去就行了,這時(shí)水晶報(bào)表已經(jīng)有數(shù)據(jù)了,這樣就OK了,打印水晶報(bào)表其實(shí)并不復(fù)雜,大多數(shù)多是固定的寫(xiě)法,我們只要設(shè)計(jì)好它的模板就行了。
總結(jié)
- 上一篇: 安卓菜鸟教程1.0(安卓菜鸟教程)
- 下一篇: 如何写登录验证