freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

【能力素質(zhì)】利用xml實現(xiàn)通用web報表打印(編輯修改稿)

2025-09-18 05:31 本頁面
 

【文章內(nèi)容簡介】 。break。 default: printElement = new PrintElement()。 break。 } return printElement。 } } } 好了,核心的解析和標簽的具體打印方法已經(jīng)完成了,現(xiàn)在我們回到PrintControl中編寫一些代碼來測試我們的成果。 首先,需要引用兩個要用到的名稱空間: using 。 using 。 然后,在打印之前,需要根據(jù)XML文件中的pagesetting標簽來設(shè)置一下打印機的頁面,所以我們先寫一個方法來設(shè)置打印機。在PrintControl類中增加一個私有的方法: private void SettingPrinter(XmlNode ps) { //打印方向(縱/橫) = (ps[landscape].InnerText)。 //設(shè)置紙張類型 string papername = ps[paperkind].InnerText。 bool fitpaper = false。 //獲取打印機支持的所有紙張類型 foreach(PaperSize size in ) { if(papername == )//看該打印機是否有我們需要的紙張類型 { = size。 fitpaper = true。 } } if(!fitpaper) { //假如沒有我們需要的標準類型,則使用自定義的尺寸 = new PaperSize(Custom, (ps[paperwidth].InnerText), (ps[paperheight].InnerText))。 } } 接下來,我們類中添加一個XmlDocument的對象和一個靜態(tài)變量計算頁碼: private XmlDocument doc = new XmlDocument()。 public static int Pages = 1。 然后再控件的Load事件中為該對象加載XML報表數(shù)據(jù),代碼如下: private void PrintControl_Load(object sender, e) { try { //裝載報表XML數(shù)據(jù) = 正在加載報表數(shù)據(jù),請稍侯...。 (://localhost/)。 = 報表數(shù)據(jù)加載完畢!。 = = = true。 } catch(Exception ex) { = 出現(xiàn)錯誤: + 。 } } 請注意,我們這里只是裝入了一個本地的測試數(shù)據(jù)文件(該文件的編寫請參考《利》文),其實,完全可以改成裝載網(wǎng)絡(luò)上任何地方的靜態(tài)或者動態(tài)的XML文件,(://localhost/)可以改寫成: ()。 ()。 (?date=xxx)。 等等,只要裝載的數(shù)據(jù)是符合我們規(guī)定的XML數(shù)據(jù)文檔就可以。 然后在控件的構(gòu)造函數(shù)中加入打印事件的委托: public PrintControl() { InitializeComponent()。 += new PrintPageEventHandler()。 } 該委托方法的代碼如下: private void pd_PrintPage(object sender, PrintPageEventArgs ev) { Graphics g = 。 bool HasMorePages = false。 PrintElement printElement = null。 foreach(XmlNode node in doc[root][reporttable].ChildNodes) { printElement = (node)。//調(diào)用解析器生成相應的對象 try { HasMorePages = (g)。//是否需要分頁 } catch(Exception ex) { = 。 } } //在頁底中間輸出頁碼 Font font = new Font(黑體, )。 Brush brush = new SolidBrush()。 (第 + () + 頁, font,brush, / 2 + 30, 60)。 if(HasMorePages) { Pages++。 } = HasMorePages。 } 三個按紐的Click事件代碼分別如下: //頁面設(shè)置 private void button1_Click(object sender, e) { ()。 = 。 } //打印預覽 private void button2_Click(object sender, e) { try { ()。 } catch(Exception ex) { = 。 } } //打印 private void button3_Click(object sender, e) { try { ()。 } catch(Exception ex) { = 。 } } 好了,我們的打印控件到這里就全部做完了,選擇生成一個Release的版本,,在合適的地方加上:object id=print classid=: Width=100% Height=60 /object,為了更加形象和美觀,還可以將需要打印的數(shù)據(jù)做成網(wǎng)頁形式放在上面,如果需要獲取的XML是動態(tài)數(shù)據(jù)源,則可以采用asp等動態(tài)腳本來生成該網(wǎng)頁表格,如果需要獲取的XML是一個靜態(tài)的文本,則可以采用XSLT直接將XML文件轉(zhuǎn)換成網(wǎng)頁表格。 打開瀏覽器,輸入:://localhost/,如果您已經(jīng)跟我一樣,事先做好了一個XML報表數(shù)據(jù)文件的話,您就可以看到下圖所示的效果 請注意:該圖示例中的所有數(shù)據(jù)均為筆者隨意虛擬,網(wǎng)頁中的表格數(shù)據(jù)和打印數(shù)據(jù)并非來自同一數(shù)據(jù)源,也沒有刻意去對等,僅僅只是為了演示一下效果,因此網(wǎng)頁顯示報表跟打印預覽中的報表有一些出入是正常的。在實際應用中可以讓網(wǎng)頁顯示數(shù)據(jù)跟打印輸出數(shù)據(jù)完全一致。 方案擴充: 有一部分讀者在來信中問到如何打印一些特殊形態(tài)的圖表,《利》文中已經(jīng)提到,采用本方案可以非常方便的定義出自己所需要的標簽,在理論上可以打印出任何樣式的特殊圖表。因此本文打算詳細介紹一下增加自己定義的標簽擴充打印格式的具體過程。 先假設(shè)我們的客戶看了打印效果后基本上滿意,但是還有覺得一點不足,如果需要打印一些圖表怎么辦?例如折線圖、K線圖、餅狀圖、柱狀圖等等。使用我們現(xiàn)有的標簽就不行了,所以我們首先要擴充我們的標簽庫,讓它的表達能力更加強。在這里,我將只打算讓我們的打印控件學會畫簡單的折線圖,希望讀者能舉一反三,創(chuàng)造出其它各種各樣的打印效果。 最基本的折線圖是由X坐標軸、Y坐標軸和一系列點連接成的線構(gòu)成的,因此,我定義了以下幾種標簽: 1. linechart:跟table,text標簽一樣,為樣式根標簽。 屬性:無 2. coordinate:坐標。 屬性:無 3. xcoordinate:X軸坐標線 屬性: x:起點X坐標值 y:起點Y坐標值 length:長度值 stroke:粗細 color:顏色 arrow:是否有箭頭 4. ycoordinate:Y軸坐標線 屬性:同xcoordinate。 5.scale:刻度線 標簽內(nèi)容:顯示在刻度邊的文字 屬性: length:距離起點長度值 height:刻度線高度 width:刻度線寬度 color:顏色 fontsize:字體大小 6.chart:圖表根 屬性:無 7.lines:線段 屬性值: stroke:粗細 color:顏色 8. point:點 屬性值: x:X坐標值 y:Y坐標值 radius:半徑 color:顏色 其結(jié)構(gòu)圖如下所示: 下面是一段用剛才定義的標簽制作的XML折線圖示例:
點擊復制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1