自定义GridView 介绍
GridView 是Microsoft DataGrid(VS2003版本)的一個替代品,它繼承了DataGrid的很多優點,同時也繼承了它的很多缺點,我們在方便使用的同時,還是不免會產生一絲遺憾。早在2004年的時候,對DataGrid 進行了二次封裝(DotNetGrid 介紹 ),感覺到對我們系統的性能,開發效率方面,提供了很多的幫助。所以我覺得還是有必要把這些功能升級到GridView 中,下面我將一一介紹,我的BNGridView提供了哪些方面的功能。
總覽:
????? 該控件主要包括以下幾方面的功能:
1、查詢(復雜查詢與簡單查詢相結合)。
2、分頁。
3、支持行、列合并。
4、自定義多層表頭。
5、支持多條件的合計、匯總。
6、支持行、列固定。
7、支持數據的樹狀顯示。
8、列表數據到導出到Excel文檔。
下面,我將一一介紹,如何使用這些功能:
一、查詢。
?????1、簡單查詢:如圖。
?
從如圖所示的下拉列表框中選中某一項,輸入查詢關鍵字,“Go”,即可查詢你要的記錄。下拉列表框中的項目,默認狀態是該GridView 中的列(也可以附加一些與該列表相關的列)。
?????2、復雜查詢:
用戶可以定義自已的查詢方案,以備下次使用。該查詢可以任意條件組合,非常靈活、方便。其查詢條件的定義,如下圖所示:
????? 本查詢列表還支持“本人”“本月”“本年”等特定關鍵。共享查詢就更方便靈活了。
二、分頁:
?
三、多條件的合計、匯總;行列合并.
?
四、行、列固定。
?
五、多層表頭支持。
?
六、列表數據樹形結構展示。
??????
?
幾點說明:
?一、數據綁定,支持兩種方式的數據綁定:
1:DataBind(DataTable dt),即支持傳入DataTable 進行綁定,該DataTable將被Cache,頁面刷新、翻頁、排序等操作,將直接從Cache 獲取。
2:SQL 綁定,即傳入綁定列表數據的SQL,同時指定連接DB的ConnectionString 。控件在獲取數據源時,將會解析該SQL語句,根據每頁的記錄數,當前頁碼,對SQL進行重新組合,然后交由DB執行。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");
?
經幾年來的實踐檢驗,這樣的分頁效率是相當高的,現在我們的業務系統,每個表幾百數據,而且是三、四張表關聯查詢,一點問題都沒有,值得信賴。
二、導出到Excel ,這是一種非種成熟的技術,不值得一提。但是最近有用戶提出,希望能導出 PDF 文檔,不知道該如何處理,還望各位網友不吝賜教。
三、BNGridView 的使用相當方便,基本沿用了原始GridView的使用模式,只是在傳遞數據源綁定時有所不同,例如:?
使用范例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 的使用范例及源碼,我還沒有整理出來,最近幾天將會完成,如果哪位網友有參考的必要,請留言。
??
源碼下載 BNGridView
總結
以上是生活随笔為你收集整理的自定义GridView 介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第 8 章 配置listener监听器
- 下一篇: 真格量化——做空波动率卖期权策略