摘 要:DevExress控件是VS.net開發(fā)中應用最廣、效果最出眾的控件包之一。本文通過充分運用了DevExpress控件中的XtraGrid組件,快速實現(xiàn)了數(shù)據(jù)顯示組件常用功能提高了工作效率,節(jié)省了寶貴的時間,并且該組件的使用還受到廣大用戶的好評。
關鍵詞:DevExpress控件;數(shù)據(jù)顯示組件
DevExpres產(chǎn)品是全球享有極高聲譽的一流控件套包產(chǎn)品。國內(nèi)典型用戶包括:用友、金蝶、神州數(shù)碼、工信部、中國石化、漢王科技等眾多大中型科技型企業(yè)。不足的是該控件包自帶的演示中、沒有運行時配置(動態(tài)設置)控件屬性的介紹,這對于很多軟件開發(fā)工作來說,很不方便。本人結合自己工作經(jīng)驗,探討基于基于DevExpress的數(shù)據(jù)顯示組件開發(fā)技術。
1 數(shù)據(jù)顯示組件應用需求
⑴單記錄與多記錄方式混合顯示:當查詢結果有多條記錄時,由于很多數(shù)據(jù)表中的數(shù)據(jù)項非常多,用戶經(jīng)常需要左右滾動才能查看該記錄中的所有數(shù)據(jù)項,非常不適合用戶使用習慣。這樣數(shù)據(jù)查詢顯示組件設計時可考慮在窗口的左方設為多記錄顯示方式,右方為單記錄顯示方式,當用戶點擊左方某一行時,將該記錄的數(shù)據(jù)同步在右方進行單記錄顯示。⑵常用字段定制功能:數(shù)據(jù)庫中各類數(shù)據(jù)表中的數(shù)據(jù)項存在非常多的現(xiàn)象。要組織好這些數(shù)據(jù)項解決當前的問題,數(shù)據(jù)顯示組件需要提供常用字段定制功能,由用戶自己進行定制數(shù)據(jù)項的顯示與隱藏才是最有效的解決方案。⑶數(shù)據(jù)快速搜索功能:數(shù)據(jù)庫中某些數(shù)據(jù)表記錄條數(shù)能達到成千上萬條,是一個數(shù)據(jù)量很大的集合。如何從數(shù)據(jù)表中查詢出想要記錄信息呢?因此,組件有必要設計“數(shù)據(jù)快速搜索”功能,通過精確查詢和模糊查詢的方式完成信息快速定位。⑷字段分組統(tǒng)計功能:查詢結果顯示出來后,可以對某一列進行統(tǒng)計,主要是針對數(shù)據(jù)類型的列,可以統(tǒng)計其最大值、最小值、累計值、平均值等。(5)選中記錄行并通過右鍵菜單調(diào)用其他數(shù)據(jù)顯示模塊功能:在實際應用中會需要關聯(lián)其他數(shù)據(jù)表的查詢,組件還需要提供關聯(lián)查詢的功能接口。(6)文檔查詢功能:很多文檔在數(shù)據(jù)庫中都以Blob、Clob字段類型存放,數(shù)據(jù)顯示時組件應以超鏈的形式關聯(lián)查詢數(shù)據(jù)表中存放的Word、Pdf等格式的文檔資料。(7)鎖定列功能:當數(shù)據(jù)項比較多的時候,用戶橫向滾動時,往往最后不知該記錄是哪口井、哪個研究工區(qū)的數(shù)據(jù),這時需要將前面幾列進行鎖定,鎖定后再滾動時,就可以看到該記錄具體的信息了。
2 DevExpress實現(xiàn)方法
⑴單記錄與多記錄方式混合顯示實現(xiàn):XtraGrid負責實現(xiàn)多記錄顯示,單記錄的顯示由XtraVerticalGrid負責完成。XtraGrid和XtraVerticalGrid分別先與數(shù)據(jù)源進行綁定,dataSet為通過數(shù)據(jù)查詢服務獲取到的數(shù)據(jù)庫查詢結果集:this.gridControl.DataSource=dataSet.Tables[0];this.vGridControl.DataSource=dataSet.Tables[0];
⑵在XtraGrid中完成功能:XtraGrid的關鍵類就是GridControl和GridView。GridControl本身不顯示數(shù)據(jù),數(shù)據(jù)都是顯示在GridView中。GridControl是各種View的容器。所以要控制顯示,要從GridView這些類入手。GridView的OptionsMenu中的默認屬性設置可以完成數(shù)據(jù)項的排序、過濾查詢、快速查找、分組統(tǒng)計、字段定制、字段寬度調(diào)整等功能,軟件開發(fā)人員不需編寫一行代碼。GridView其他屬性設置:
gridView.OptionsBehavior.Editable=1;//禁止編輯數(shù)據(jù)
gridView.OptionsView.ShowGroupPanel=1;//初始分組隱藏
gridView.Appearance.OddRow.BackColor=Color.AliceBlue;//設置奇行顏色
AllowDeleteRows=False;AllowAddRows=False;//設置數(shù)據(jù)庫記錄的增刪
//設置鎖定列,通過遍歷gridView.Columns根據(jù)列位置跟選中列位置比較進行鎖定。
if(GridColumn.ColumnHandle<=gridView.FocusedColumn.ColumnHandle)
{GridColumn.Fixed=DevExpress.XtraGrid.Columns.FixedStyle.Left;}
//記錄的上下滾動,關鍵方法是:
if(e.Delta<0)view.MoveNext();elseif(e.Delta>0)view.MovePrev();
//添加序號列,在gridView_CustomDrawRowIndicator方法中添加:
introwIndex=e.RowHandle;if(e.Info.IsRowIndicatorrowIndex>=0)
{rowIndex+=1;e.Info.DisplayText=rowIndex.ToString();}
//右鍵菜單關聯(lián)顯示,在gridView_MouseUp方法中完成。
if(this.gridView.Columns.ColumnByFieldName(\"字段名稱\")!=1)
{//可以在此處創(chuàng)建右鍵菜單內(nèi)容項}
//blob字段超級鏈接顯示
RepositoryItemHyperLinkEditvHyperLinkEdit=newRepositoryItemHyperLinkEdit();
vHyperLinkEdit.Caption=\"打開\";
row.Properties.RowEdit=vHyperLinkEdit;row.Appearance.Font=newSystem.Drawing.Font(\"Tahoma\",8.25F,System.Drawing.FontStyle.Bold);row.Appearance.BackColor=Color.Pink;
//查詢結果保存,filename為要保存的文件名稱。
BaseView.ExportToXls(filename);BaseView.ExportToXlsx(filename)等方法。
[參考文獻]
[1]盛健,季曉勇.DirectShow過濾器組件開發(fā)技術及其應用實例[J].微型機與應用,2004,23(1):47-49.
[2]李福紅.DevExpres表格控件運行時動態(tài)設置表格列高級技巧(一)[J].電腦編程技巧與維護,2011(3):32-34.