此次版本更新,主要是針對用戶的反饋意見進行的。本着盡量多寫Demo,少寫文檔的原則。畢竟文檔千言,不如代碼一行,關鍵是我語言表達能力也不行啊!:)
主要實現以下新功能:
1、不彈出打印對話框(需要提升的權限,只支持Silverlight 5):
Silverlight 5支持使用默認打印機直接打印,而不彈出打印對話框。但是,需要用戶權限提升,如果是OOB瀏覽器外應用的話只需要兩步:
你的應用程序項目屬性,中勾選:
點擊"瀏覽器外設置",勾選:
如果是瀏覽器內運行的程序,需要設置成瀏覽器內受信任的應用程序,參見我的另一篇文章:企業內部使用Silverlight5瀏覽器內受信任的應用程序
調用很簡單:
Report.Print(true); //傳參數true即可
2、設置打印紙張大小和方向(需要提升的權限)
silverlight完全受信任運行時,可以通過平台調用PInvoke做任何事情,當然包括改變打印紙張大小和方向。
3、增加多個回調函數,讓用戶對打印過程有更多控制,有更多自由發揮的空間。
例如:1)實現“本頁小計”功能,可以通過“PrintPageFooterCallBack”回調,在頁腳添加:
甚至可以在表體最后一行添加:
2)通過“PrintReportFooterCallBack”,可以在報表的最后打印圖表等任何東西,並實現自動分頁。
4、從單獨的文件中,或者從字符串中加載報表模板:
有時我們可能需要將報表定義放到單獨的文件中,或者從后台加載報表定義,然后綁定數據源。詳情參見Demo-“動態加載表模板”
5、自定義表體:
通常情況下,我們的表體是二維表格的形式。如果你的表體不是,例如是一條記錄一個表。這可以通過自定義項模板實現,同樣可以實現自動分頁。其實這不是什么新功能,只是Demo中沒有演示。詳情可參見我的另一篇blog:Silverlight打印解決方案2.0之如何自定義表體
6、套打:
其實只要對Silverlight的數據綁定熟悉的話,可以很輕松的實現套打。Demo中有兩個例子,可以參考。
7、手動分頁:
支持手動插入分頁符,是通過報表的ManualPager數組實現的。
8、動態表頭:
如果要實現按月統計訂單的功能,動態設置表頭的數據源還是需要有的!
9、報表組合:
有時我們需要把幾份報表合成一份打印,可以定義多個Report對象,將其組合起來就可以了!
789在一個Demo中演示——“手動分頁/動態設置頁頭/分月份合計/報表組合”
10、動態設置表頭、表體和表尾的數據模板
由於報表控件不能可視化設計,對於不熟悉Xaml的開發人員是個問題。數據模板支持動態設置,我們就可以用VS或Blend設計好模板,然后加載了。 參見Demo-套打(子報表)
11、打印預覽對話框隨着容器窗口的改變而改變。
預覽對話框繼承自ChildWindow,我們會發現當我們改變了容器窗口,例如瀏覽器窗口縮小或放大了,全屏預覽窗口不會隨之改變。此次版本更新解決了這個問題。
Bug修復:
多層表頭在特殊情況下,通常是多於2層時表格線顯示不對的bug。
注意:
1) 程序使用vs 2010 sp1和Silverlight 5 開發。如果不能打開解決方案,可能是沒有安裝Microsoft® Silverlight® 5 Tools for Visual Studio® 2010 SP1。
安裝Microsoft® Silverlight® 5 Tools for Visual Studio® 2010 SP1
2) 如果如果源代碼編譯出錯,可能是沒有安裝Silverlight Toolkit
獲取全部源代碼
購買以前版本的用戶請注意查收是否收到此次更新的源代碼,您的支持就是我的動力!