1、查询(复杂查询与简单查询相结合)。
2、分页。
3、支持行、列合并。
4、自定义多层表头。
5、支持多条件的合计、汇总。
6、支持行、列固定。
7、支持数据的树状显示。
8、列表数据到导出到Excel文档。
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分页的策略为:
Code
string 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