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

正文內(nèi)容

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

2024-09-18 05:31 本頁面
 

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