自定义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分页的策略为:

ContractedBlock.gifExpandedBlockStart.gifCode
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的使用模式,只是在传递数据源绑定时有所不同,例如: 

ContractedBlock.gifExpandedBlockStart.gif使用范例
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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/466393.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

递归算法时间复杂度计算

https://blog.csdn.net/so_geili/article/details/53444816

图解,C语言数据结构,插入排序

之前写过的排序文章,放上链接给大家看看。C语言,谁都能看得懂的归并排序高中新生开学,需要进行军训,军训的时候,教官需要大家把按高到低排队排好。先随机找到一个比较帅的男生做排头。然后第二个人过来跟这个男生比身高…

十大经典算法 - 转载

十大经典排序算法最强总结(含JAVA代码实现) 最近几天在研究排序算法,看了很多博客,发现网上有的文章中对排序算法解释的并不是很透彻,而且有很多代码都是错误的,例如有的文章中在“桶排序”算法中对每个桶进…

7E加码解码

// // 加密单个字符 uint8_t* hdlc_encode_buf(uint8_t *buf, uint8_t c) {switch (c){case 0x7E:*buf 0x7D;*buf 0x02;break;case 0x7D:*buf 0x7D;*buf 0x01;break;default:*buf c;break;}return buf; }// // 加密字符串 static void encode_process(uint8_t *encoded_bu…

我们应该学习什么 java、C#还是C++(VC)

来源:http://www.itcast.net/community/view/482 此文仅代表个人观点,欢迎讨论。 很多学员有这样的问题:我们应该学习什么语言,java、C#还是c? 好像很多公司都找会VC的人,java和C#有用吗&…

读写ini文件

读写ini文件 WritePrivateProfileString https://blog.csdn.net/wuguai4/article/details/7287346

首个开源 Linux 系统登陆火星,占有率超 Windows,一同登录还有一款安卓手机芯片...

来源| 量子位 作者 | 贾浩楠 萧箫 公众号 QbitAI“确认着陆!毅力号安全到达火星表面。”就在昨日凌晨4点55分,美国“毅力号”不经变轨,直接冲入火星大气层,最终成功着陆。“毅力号”成功着陆后,很快传回了首张图片。…

PL/SQL包(Package)

包(Package)的主要作用是用于逻辑组合相关的PL/SQL类型,一旦创建了包,包就会被存储在Oracle数据库中。 包由以下两部分组成: (1)包规范(Specification):主要是…

VS2005(c#)项目调试问题解决方案集锦

1.检测到有潜在危险的 Request.Form 值原因: (1)在提交数据的页面或webconfig中没有对validateRequest的属性进行正确的设置 (2)HTML里面写了两个<form>引起解决: 方案一&#xff1a; 在.aspx文件头中加入这句&#xff1a; <% Page validateRequest"false"…

TQ210——TFTP裸板程序下载

TQ210——TFTP裸板程序下载 1. 直接下载u-boot.bin到内存运行&#xff08;使用DNW中的的210USB启动下载&#xff09;,在DNW中输入命令可以直接查看修改u-boot.bin 2. 通过tftp下载你需要下载的程序到内存下载示例: tftp 30000000(指定程序led_on.bin下载到内存中的30000000地址…

看了这动图,你还会相信眼睛吗?

面对下面这张动图&#xff0c; 你看到的是两个顺时针旋转的黄蓝相间的圆环&#xff0c;在中心箭头的指引下做上下左右运动、扩展、收缩。稍微留神一下&#xff0c;你会发现好像这应该是收到箭头的暗示所产生的幻觉。▲ 圆圈看起来跟着箭头移动和变化为了证实这个错误的起因&…

Web页面在桌面上显示的后台基本步骤

一个Web页面如何出现在你的电脑屏幕上,以下是幕后的基本步骤: 例如访问&#xff1a;地址是http://www.osssi.com/article/1/120 的web页面。 浏览器把URL拆分成了三个部分: >协议&#xff1a;http >服务器名称&#xff1a;www.osssi.com >文件名&#xff1a;artic…

WDS远程安装

WDS远程安装1.创建可启动 Windows PEa&#xff09;安装Windows AIK软件&#xff0c;免费下载700多Mb&#xff09;运行 copype.cmd 脚本&#xff0c;以创建本地 Windows?PE 构建目录。例如&#xff0c;在命令提示符下&#xff0c;键入以下内容&#xff1a;cd Program Files\Win…

TQ210——下载总结

TQ210——下载总结 学习方法:(分阶段学习)-----内核学习是一个长期的过程 1.学习使用内核提供的接口函数 (涉及到很多操作系统知识,编程规范) 2.找到一个函数如do_fork来学习进程管理模块 3.通过kmalloc函数来学习进程管理,通过do_irq学习中断管理 1.U-BOOT配置与烧写常用命令…

解剖8051内核如何进行多任务切换

最近在玩新唐单片机&#xff0c;这个跟我之前用的51内核是一样的&#xff0c;然后今天觉得跑下多任务&#xff0c;自己研究了下&#xff0c;跟几个同学还讨论了&#xff0c;发现有些人对切换过程还不是十分明白&#xff0c;所以发个文章出来。直接上代码#include "MS51_16…

孙鑫6菜单

孙鑫6&#xff0c;遇到的问题解决方法 https://blog.csdn.net/caichao1234/article/details/8431921 C中 error C2593: “operator ”不明确的错误解决方法 https://blog.csdn.net/yaosir1993/article/details/52497890?utm_sourceblogxgwz4

java与.net平台之间进行RSA加密验证

RSA加密算法虽然不分平台&#xff0c;标准都是一样的&#xff0c;但是各个平台的实现方式都不尽相同&#xff0c;下面来我来说说java与.net平台之间该如何进行RSA加密验证&#xff0c;即java端加密-》.net端验证和.net端加密-》java端验证。我对RSA算法也只是停留在应用的层面&…

渡虎谷告诉你CSS的结构和规则

基本语法规则选择符任何HTML元素都可以是一个CSS1的选择符。选择符仅仅是指向特别样式的元素。例如&#xff0c; P { text-indent: 3em }当中的选择符是P。 类选择符单一个选择符能有不同的CLASS(类)&#xff0c;因而允许同一元素有不同样式。例如&#xff0c;一个网页制作者也…

阿莫电子为啥越来越差?

我是在上大学接触到这个论坛的&#xff0c;当时我们创新基地的学长们都注册了这个论坛的账号。记得有一次看见我旁边的学长在浏览一个技术论坛&#xff0c;我就问「这个是什么网站&#xff0c;看起来好牛逼的样子」。我记得他说了一句「阿莫电子你都不知道&#xff0c;你是不是…

TQ210——文件系统

TQ210——文件系统 1.busybox 致命错误: curses.h:没有那个文件或目录 解决办法:ubuntu系统中缺少一个套件 ncurses devel,把此套件安装下即可 $ sudo apt-get install libncurses5-dev 2.Linux 根文件系统目录结构 (1) /bin 目录 该目录下存放所有用户(包括系统管理员和一…