原創|行業資訊|編輯:郝浩|2013-07-15 14:59:59.000|閱讀 402 次
概述:WebUI 2013 R1中將發布ClientUI的獨立報表開發工具,這款報表控件將完全使用XAML報表引擎,還包括一個強大的C#腳步以適應最復雜最嚴苛的報表開發需求。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
InterSoft把WebUI Studio Premier中Silverlight和WPF的相關控件統稱為ClientUI,表明其主要用于客戶端界面的開發。而在InterSoft年初發布的技術路線圖中,已經明確了將在WebUI 2013 R1中發布ClientUI的獨立報表開發工具,這款報表控件將完全使用XAML報表引擎,還包括一個強大的C#腳步以適應最復雜最嚴苛的報表開發需求。一年已經過半,我們今天就來看看這個報表控件的相關內容。
就現在慧都獨家獲得的資料來看,這款報表控件很明顯瞄準的是高級報表開發的市場,充分運用WebUI在Grid網格操作上的優勢,具有強大的靈活性。同時WebUI一直追求的高效率也將體現在報表超快的渲染性和出色的用戶體驗上,相信這款報表控件將會非常實用。
Silverlight和WPF的開發者來使用這款新的報表控件,可以說是完全不需要花精力去學習,因為它是完全使用類似XAML的報表元數據去定義的。由于這個報表控件的XAML符合Visual Studio規范,所以它也擁有VS的智能提示,屬性值自動完成等功能。
下面就是一個XAML報表文檔的例子:
<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>
舉一個簡單的例子,XAML報表文件的引入讓報表樹中的子元素能夠從特定父元素中獲取值,這一功能,讓能夠報表更加簡潔且開發效率更高。
數據源支持一直都是報表開發者關心的重點,InterSoft透露,這款即將發布的報表控件,從數據源的入口到像素化的報表生存渲染,都將完全運行在客戶端。這意味著,它將對數據源完全沒有限制,適用于任何數據源,所以無論domain service,Web服務,WCF服務,或其他任何類型的對象,都可以作為數據源連接到報表控件中。
而且服務的獨立性讓報表引擎可以在客戶端同時運行多個任務,這讓這款控件的客戶端用戶體驗更快,反應更迅速。更重要的是,這讓部署報表變得非常簡單,因為開發的報表最終就是一個XAML文件,只要將該報表上次至網站就完成了部署。
這款報表控件的主要特點之一就是功能強大的腳本引擎,而為了減少學習腳本語言的學習時間,確保該腳本引擎既直觀又能適用于復雜的報表開發,InterSoft獨創了一個適用于報表的腳本引擎,他的編寫風格類似C#,支持復雜的C#風格的語句和語法,還能夠訪問完整的.NET庫和類。不僅僅支持單行表達式,更能夠實現多行語法。通過該腳本能夠獲取或設置對象屬于,還能夠創建新對象。由于腳本引擎中的完整DLR集成和表達式綁定,讓腳本運行速度與編譯執行速度幾乎一樣快。
下面就是一個腳本用法的例子:
<TextBlock Text="@[Invoice.ShipPostalCode + ' ' + Invoice.ShipCity + ' ' + Invoice.ShipCountry]"/> <TextBlock Text="@[string.Format('{0:C2}', (Invoice.UnitPrice * Invoice.Quantity * (1-Invoice.Discount)))]"/>
此外,報表引擎還支持在報表事件中直接編輯腳本,這就無需編寫代碼,實現了動態報表。下面的例子就是在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; }
這個獨立的報表控件當然也會附帶一個報表查看器,這款報表查看器的最大特點就是在處理大體積報表文檔時完全沒有性能瓶頸。由于InterSoft采用了裸機虛擬化和最先進的渲染技術,杜絕了很多其他報表開發工具在生成大量報表頁時會出現程序假死的情況。
市面上大多數報表渲染都是通過LoadingMode屬性,默認情況下報表在加載的瞬間將渲染所有報表頁,高級一點的報表控件會在這個時候顯示LOADING狀態來阻止用戶的其他操作,用以防止報表瀏覽器和應用程序的假死狀態。如下圖所示。
但是如果渲染大量報表頁的時候,還是采用這個方法的話,會造成LOADING時間也就是凍結瀏覽器的時間過長,這可能長達幾分鐘,造成非常糟糕的用戶體驗。
WebUI這次將發布的報表控件就徹底解決了這一問題,創造性的發明了非常復雜的技術,允許在后臺完成報表生成,在不犧牲性能的前提下,更新用戶界面。這種向下滾動后實時呈現的響應方式在最近非常流行,用戶體驗非常優秀。如下圖所示。
即將發布的報表瀏覽器還可以實時的顯示用戶在運行時輸入的數據。它提供一個生成和顯示參數對話框的機制,來實現這一需求。
在上圖中,你還可以發現這個報表瀏覽器中,還包括了一些ClientUI文件瀏覽器的功能,如打印,精確文本選擇,縮放、搜索、縮略圖等。
這款即將推出的報表引擎將內置多款報表控件,但是由于它的模塊化的設計,開發者也可以選擇其中所需的部分來實現輕量化的報表開發。他強大的可擴展能力,讓添加自定義的報表控件成為可能。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都控件網