原創(chuàng)|行業(yè)資訊|編輯:郝浩|2013-07-15 14:59:59.000|閱讀 402 次
概述:WebUI 2013 R1中將發(fā)布ClientUI的獨(dú)立報(bào)表開發(fā)工具,這款報(bào)表控件將完全使用XAML報(bào)表引擎,還包括一個(gè)強(qiáng)大的C#腳步以適應(yīng)最復(fù)雜最嚴(yán)苛的報(bào)表開發(fā)需求。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
InterSoft把WebUI Studio Premier中Silverlight和WPF的相關(guān)控件統(tǒng)稱為ClientUI,表明其主要用于客戶端界面的開發(fā)。而在InterSoft年初發(fā)布的技術(shù)路線圖中,已經(jīng)明確了將在WebUI 2013 R1中發(fā)布ClientUI的獨(dú)立報(bào)表開發(fā)工具,這款報(bào)表控件將完全使用XAML報(bào)表引擎,還包括一個(gè)強(qiáng)大的C#腳步以適應(yīng)最復(fù)雜最嚴(yán)苛的報(bào)表開發(fā)需求。一年已經(jīng)過半,我們今天就來看看這個(gè)報(bào)表控件的相關(guān)內(nèi)容。
就現(xiàn)在慧都獨(dú)家獲得的資料來看,這款報(bào)表控件很明顯瞄準(zhǔn)的是高級(jí)報(bào)表開發(fā)的市場,充分運(yùn)用WebUI在Grid網(wǎng)格操作上的優(yōu)勢,具有強(qiáng)大的靈活性。同時(shí)WebUI一直追求的高效率也將體現(xiàn)在報(bào)表超快的渲染性和出色的用戶體驗(yàn)上,相信這款報(bào)表控件將會(huì)非常實(shí)用。
Silverlight和WPF的開發(fā)者來使用這款新的報(bào)表控件,可以說是完全不需要花精力去學(xué)習(xí),因?yàn)樗峭耆褂妙愃芚AML的報(bào)表元數(shù)據(jù)去定義的。由于這個(gè)報(bào)表控件的XAML符合Visual Studio規(guī)范,所以它也擁有VS的智能提示,屬性值自動(dòng)完成等功能。
下面就是一個(gè)XAML報(bào)表文檔的例子:
<ReportDocument Name="Report1" xmlns="//intersoft.reporting.com/schemas" ReportUnit="Centimeters"> <ReportDocument.DataDefinitions> ... </ReportDocument.DataDefinitions> <ReportDocument.Pages> <ReportPage Name="Page1" PageHeight="29.7" PageWidth="21" Margin="1,1,1,1"> <ReportPage.Components> <HeaderBand Name="InvoiceHeader" LayoutBox="0,7.4,19,0.8"> <HeaderBand.Components> <TextBlock LayoutBox="0,0,2.2,0.8" Text="Product ID" TextAlignment="Center"/> </HeaderBand.Components> </HeaderBand> <DataBand Name="InvoiceData" LayoutBox="0,9,19,0.8" ObjectDataSourceGuid="ab5ee58b31fd440aa34aaec8735abf29"> ... </DataBand> <FooterBand Name="InvoiceFooter" LayoutBox="0,10.6,19,0.8"> ... </FooterBand> <ReportPage.Components> </ReportPage> </ReportDocument.Pages> <ReportDocument.Styles> ... </ReportDocument.Styles> </ReportDocument>
舉一個(gè)簡單的例子,XAML報(bào)表文件的引入讓報(bào)表樹中的子元素能夠從特定父元素中獲取值,這一功能,讓能夠報(bào)表更加簡潔且開發(fā)效率更高。
數(shù)據(jù)源支持一直都是報(bào)表開發(fā)者關(guān)心的重點(diǎn),InterSoft透露,這款即將發(fā)布的報(bào)表控件,從數(shù)據(jù)源的入口到像素化的報(bào)表生存渲染,都將完全運(yùn)行在客戶端。這意味著,它將對(duì)數(shù)據(jù)源完全沒有限制,適用于任何數(shù)據(jù)源,所以無論domain service,Web服務(wù),WCF服務(wù),或其他任何類型的對(duì)象,都可以作為數(shù)據(jù)源連接到報(bào)表控件中。
而且服務(wù)的獨(dú)立性讓報(bào)表引擎可以在客戶端同時(shí)運(yùn)行多個(gè)任務(wù),這讓這款控件的客戶端用戶體驗(yàn)更快,反應(yīng)更迅速。更重要的是,這讓部署報(bào)表變得非常簡單,因?yàn)殚_發(fā)的報(bào)表最終就是一個(gè)XAML文件,只要將該報(bào)表上次至網(wǎng)站就完成了部署。
這款報(bào)表控件的主要特點(diǎn)之一就是功能強(qiáng)大的腳本引擎,而為了減少學(xué)習(xí)腳本語言的學(xué)習(xí)時(shí)間,確保該腳本引擎既直觀又能適用于復(fù)雜的報(bào)表開發(fā),InterSoft獨(dú)創(chuàng)了一個(gè)適用于報(bào)表的腳本引擎,他的編寫風(fēng)格類似C#,支持復(fù)雜的C#風(fēng)格的語句和語法,還能夠訪問完整的.NET庫和類。不僅僅支持單行表達(dá)式,更能夠?qū)崿F(xiàn)多行語法。通過該腳本能夠獲取或設(shè)置對(duì)象屬于,還能夠創(chuàng)建新對(duì)象。由于腳本引擎中的完整DLR集成和表達(dá)式綁定,讓腳本運(yùn)行速度與編譯執(zhí)行速度幾乎一樣快。
下面就是一個(gè)腳本用法的例子:
<TextBlock Text="@[Invoice.ShipPostalCode + ' ' + Invoice.ShipCity + ' ' + Invoice.ShipCountry]"/> <TextBlock Text="@[string.Format('{0:C2}', (Invoice.UnitPrice * Invoice.Quantity * (1-Invoice.Discount)))]"/>
此外,報(bào)表引擎還支持在報(bào)表事件中直接編輯腳本,這就無需編寫代碼,實(shí)現(xiàn)了動(dòng)態(tài)報(bào)表。下面的例子就是在Printing事件中的腳本引擎。
// TextBlock_Printing(object sender, EventArgs e) var totalAmount = Math.Ceiling([Order.Order_Details.Qty] * [Order.Order_Details.UnitPrice]); var highestAmount = Math.Max(totalAmount, [AllOrderAmount]); if (highestAmount > [Customer.CreditLimit]) { e.Text = "Over limit"; sender.Foreground = Colors.Red; } else { e.Text = "Good"; sender.Foreground = Colors.Black; }
這個(gè)獨(dú)立的報(bào)表控件當(dāng)然也會(huì)附帶一個(gè)報(bào)表查看器,這款報(bào)表查看器的最大特點(diǎn)就是在處理大體積報(bào)表文檔時(shí)完全沒有性能瓶頸。由于InterSoft采用了裸機(jī)虛擬化和最先進(jìn)的渲染技術(shù),杜絕了很多其他報(bào)表開發(fā)工具在生成大量報(bào)表頁時(shí)會(huì)出現(xiàn)程序假死的情況。
市面上大多數(shù)報(bào)表渲染都是通過LoadingMode屬性,默認(rèn)情況下報(bào)表在加載的瞬間將渲染所有報(bào)表頁,高級(jí)一點(diǎn)的報(bào)表控件會(huì)在這個(gè)時(shí)候顯示LOADING狀態(tài)來阻止用戶的其他操作,用以防止報(bào)表瀏覽器和應(yīng)用程序的假死狀態(tài)。如下圖所示。
但是如果渲染大量報(bào)表頁的時(shí)候,還是采用這個(gè)方法的話,會(huì)造成LOADING時(shí)間也就是凍結(jié)瀏覽器的時(shí)間過長,這可能長達(dá)幾分鐘,造成非常糟糕的用戶體驗(yàn)。
WebUI這次將發(fā)布的報(bào)表控件就徹底解決了這一問題,創(chuàng)造性的發(fā)明了非常復(fù)雜的技術(shù),允許在后臺(tái)完成報(bào)表生成,在不犧牲性能的前提下,更新用戶界面。這種向下滾動(dòng)后實(shí)時(shí)呈現(xiàn)的響應(yīng)方式在最近非常流行,用戶體驗(yàn)非常優(yōu)秀。如下圖所示。
即將發(fā)布的報(bào)表瀏覽器還可以實(shí)時(shí)的顯示用戶在運(yùn)行時(shí)輸入的數(shù)據(jù)。它提供一個(gè)生成和顯示參數(shù)對(duì)話框的機(jī)制,來實(shí)現(xiàn)這一需求。
在上圖中,你還可以發(fā)現(xiàn)這個(gè)報(bào)表瀏覽器中,還包括了一些ClientUI文件瀏覽器的功能,如打印,精確文本選擇,縮放、搜索、縮略圖等。
這款即將推出的報(bào)表引擎將內(nèi)置多款報(bào)表控件,但是由于它的模塊化的設(shè)計(jì),開發(fā)者也可以選擇其中所需的部分來實(shí)現(xiàn)輕量化的報(bào)表開發(fā)。他強(qiáng)大的可擴(kuò)展能力,讓添加自定義的報(bào)表控件成為可能。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都控件網(wǎng)