自定义GridView 介绍
GridView 是Microsoft DataGrid(VS2003版本)的一個(gè)替代品,它繼承了DataGrid的很多優(yōu)點(diǎn),同時(shí)也繼承了它的很多缺點(diǎn),我們在方便使用的同時(shí),還是不免會(huì)產(chǎn)生一絲遺憾。早在2004年的時(shí)候,對DataGrid 進(jìn)行了二次封裝(DotNetGrid 介紹 ),感覺到對我們系統(tǒng)的性能,開發(fā)效率方面,提供了很多的幫助。所以我覺得還是有必要把這些功能升級到GridView 中,下面我將一一介紹,我的BNGridView提供了哪些方面的功能。
總覽:
????? 該控件主要包括以下幾方面的功能:
1、查詢(復(fù)雜查詢與簡單查詢相結(jié)合)。
2、分頁。
3、支持行、列合并。
4、自定義多層表頭。
5、支持多條件的合計(jì)、匯總。
6、支持行、列固定。
7、支持?jǐn)?shù)據(jù)的樹狀顯示。
8、列表數(shù)據(jù)到導(dǎo)出到Excel文檔。
下面,我將一一介紹,如何使用這些功能:
一、查詢。
?????1、簡單查詢:如圖。
?
從如圖所示的下拉列表框中選中某一項(xiàng),輸入查詢關(guān)鍵字,“Go”,即可查詢你要的記錄。下拉列表框中的項(xiàng)目,默認(rèn)狀態(tài)是該GridView 中的列(也可以附加一些與該列表相關(guān)的列)。
?????2、復(fù)雜查詢:
用戶可以定義自已的查詢方案,以備下次使用。該查詢可以任意條件組合,非常靈活、方便。其查詢條件的定義,如下圖所示:
????? 本查詢列表還支持“本人”“本月”“本年”等特定關(guān)鍵。共享查詢就更方便靈活了。
二、分頁:
?
三、多條件的合計(jì)、匯總;行列合并.
?
四、行、列固定。
?
五、多層表頭支持。
?
六、列表數(shù)據(jù)樹形結(jié)構(gòu)展示。
??????
?
幾點(diǎn)說明:
?一、數(shù)據(jù)綁定,支持兩種方式的數(shù)據(jù)綁定:
1:DataBind(DataTable dt),即支持傳入DataTable 進(jìn)行綁定,該DataTable將被Cache,頁面刷新、翻頁、排序等操作,將直接從Cache 獲取。
2:SQL 綁定,即傳入綁定列表數(shù)據(jù)的SQL,同時(shí)指定連接DB的ConnectionString 。控件在獲取數(shù)據(jù)源時(shí),將會(huì)解析該SQL語句,根據(jù)每頁的記錄數(shù),當(dāng)前頁碼,對SQL進(jìn)行重新組合,然后交由DB執(zhí)行。SQL分頁的策略為:
Codestring?QueryPageCommandText=?@"
SELECT?*?FROM??
?????????(SELECT?TOP?{0}????*?FROM?"?+?
???"(SELECT?TOP?{1}?*?FROM?({2})?AS?t0?ORDER?BY?{3}?{4})?AS?t1?"?+?
???"ORDER?BY?{3}?{5})?AS?t2?"?+?
???"ORDER?BY?{3}?{6}?";
strSql?=?string.Format?(QueryPageCommandText,?
??????this.uCurPageRows??,???????//?{0}?-->?page?size
??????this.PageSize?*(CurPageIndex),?//?{1}?-->?size?*?index
??????SelectCommand,???????//?{2}?-->?base?query
??????SortField,????????//?{3}?-->?key?field?in?the?query
??????"ASC",?????????//?Default?to?ascending?order
??????"DESC",
??????"ASC");
?
經(jīng)幾年來的實(shí)踐檢驗(yàn),這樣的分頁效率是相當(dāng)高的,現(xiàn)在我們的業(yè)務(wù)系統(tǒng),每個(gè)表幾百數(shù)據(jù),而且是三、四張表關(guān)聯(lián)查詢,一點(diǎn)問題都沒有,值得信賴。
二、導(dǎo)出到Excel ,這是一種非種成熟的技術(shù),不值得一提。但是最近有用戶提出,希望能導(dǎo)出 PDF 文檔,不知道該如何處理,還望各位網(wǎng)友不吝賜教。
三、BNGridView 的使用相當(dāng)方便,基本沿用了原始GridView的使用模式,只是在傳遞數(shù)據(jù)源綁定時(shí)有所不同,例如:?
使用范例string?strSql;
????????????DataTable?dt;
????????????strSql?=?@"?select?ProductID,ProductName,CategoryName,QuantityPerUnit,UnitPrice,UnitsOnOrder,UnitsInStock?from?Products?a?
????????????????????????inner?join?dbo.Categories?b??on?a.CategoryID?=?b.CategoryID";
????????????dt?=?this.Sqlca.GetDataTable(strSql);
????????????this.BNGirdView1.QueryTextField?=?"ProductID,ProductName,CategoryName,QuantityPerUnit,UnitPrice,UnitsOnOrder,UnitsInStock";
????????????this.BNGirdView1.QueryValueField?=?"ProductID,ProductName,CategoryName,QuantityPerUnit,UnitPrice,UnitsOnOrder,UnitsInStock";
????????????this.BNGirdView1.SortField?=?"CategoryName";
????????????this.BNGirdView1.IsAsc?=?false;
????????????this.BNGirdView1.PageSize?=?20;
????????????this.BNGirdView1.strXMLPath?=?"~/filterinfo.xml";
????????????this.BNGirdView1.ImagePath?=?"Resource/Image/";
????????????this.BNGirdView1.DataBind(dt);
?
四、BNGridView 的使用范例及源碼,我還沒有整理出來,最近幾天將會(huì)完成,如果哪位網(wǎng)友有參考的必要,請留言。
??
源碼下載 BNGridView
總結(jié)
以上是生活随笔為你收集整理的自定义GridView 介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第 8 章 配置listener监听器
- 下一篇: 真格量化——做空波动率卖期权策略