自定义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,一经查实,立即删除!

相关文章

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

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

十大经典算法 - 转载

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

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

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

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

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

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

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

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

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

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

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

阿莫电子为啥越来越差?

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

使用栈实现中缀表达式转为后缀表达式和后缀表达式的求解

书籍在线网址http://interactivepython.org/runestone/static/pythonds/index.html 中文翻译书籍&#xff1a;https://facert.gitbooks.io/python-data-structure-cn/ 将中缀表达式转换为后缀表达式 中缀表达式&#xff08;上图&#xff0c;一般书写&#xff09;转换为后缀表达…

TQ210 —— 点亮LED

TQ210 —— 点亮LED 1、S5PV210 GPIO硬件简介 1.1、GPIO 【S5PV210有237个多功能IO口&#xff0c;通过设置寄存器确定某个引脚用于输入输出或者其他特殊功能】 GPIO的英文全称为General-PurposeIO ports&#xff0c;也就是通用IO接口。在嵌入式系统中常常有数量众多&#xff0…

拆解镍氢电池充电器,简单的电路设计令人震惊!

上班爱摸鱼&#xff0c;下班爱钓鱼&#xff0c;于是买了一个钓鱼机。不贵&#xff0c;几十块钱&#xff0c;带4条鱼竿。长这样&#xff1a;电池驱动&#xff0c;钓起鱼来乐趣无穷&#xff1a;惊喜的是&#xff0c;钓鱼机自带附赠的电池是可充电的&#xff0c;省下不少买干电池的…

设备底座几个常见固定方式

在运营商我们可以经常发现如下的固定方式&#xff0c;因为设备厂家的不同&#xff0c;以及机房上下走线方式&#xff0c;固定方式也有些差异。可以清楚看见&#xff0c;底座可以靠螺母进行微调使机柜高度&#xff0c;底部还有膨胀螺丝打入地板还有很多机柜是不加微调用的底座&a…

抽35块树莓派新品单片机送给可爱的你们

我是谁~公众号「嵌入式Linux」&#xff0c;深入解析简明扼要直白解释各种技术问题&#xff0c;包括但不局限于Linux、单片机、半导体、Android、C语言等等。号主从事嵌入式软件行业有10余年&#xff0c;建立了10余个技术微信群&#xff0c;整理了很多技术资料&#xff0c;欢迎大…

TQ210——时钟系统

TQ210——时钟系统 1、时钟域 一般来讲&#xff0c; MCU 的主时钟来源主要是外部晶振或外部时钟&#xff0c;比较常见的是 外 部晶振。一般情况&#xff0c;系统内所使用的时钟都是高频率的时钟&#xff0c;外部晶振一般达不到那么高的频率&#xff0c;所以一般使用锁相环电路&…

我的文章汇总

2018年文章汇总2019年文章汇总2020年文章汇总专辑|Linux文章汇总专辑|程序人生专辑|C语言专辑|Git专辑|安卓系统专辑|嵌入式我的知识小密圈关注公众号&#xff0c;后台回复「1024」获取学习资料网盘链接。欢迎点赞&#xff0c;关注&#xff0c;转发&#xff0c;在看&#xff0c…

webpack-安装

以前配置的gulpfile.js&#xff0c;随着版本的迭代更新&#xff0c;现在已经... 1.安装webpack npm i -g webpack-cli && npm i -g babel-preset-env 2.弹射出窗口&#xff08;我们未安装Git&#xff0c;或者未找到Git path&#xff0c;请配置path&#xff09; 3.再次执…

TQ210——S5PV210中断体系

TQ210——S5PV210中断体系 中断是指 CPU 在执行程序的过程中&#xff0c;遇到异常情况需要处理&#xff0c; CPU停 止当前程序的运行&#xff0c;保存当前程序运行处的必要参数&#xff0c;转去处理这些异常情况&#xff0c; 处理结束后再返回当前程序的间断处&#xff0c;继续…

高通骁龙888开始被Linux内核5.12版正式支持

在Linux 5.12内核合并窗口中&#xff0c;有很多新的硬件开始被支持&#xff0c;其中不乏一些知名产品例如高通骁龙888&#xff0c;除此之外还有一些与ARM平台和设备树有关的代码添加。来自Arnd Bergmann的各种内核拉取请求在周六晚上被合并&#xff0c;此前由于恶劣的冬季风暴阻…

Python实现比较两个列表(list)范围

Python实现比较两个列表(list)范围 有一道题&#xff1a; 比较两个列表范围&#xff0c;如果包含的话&#xff0c;返回TRUE&#xff0c;否则FALSE。 详细题目如下&#xff1a; Create a function, this function receives two lists as parameters, each list indicates a scop…

单片机里面的CPU使用率是什么鬼?

打开电脑的任务管理器&#xff0c;看着跳动的CPU使用率&#xff0c;发现很舒服。每一个线程占用了多少CPU清清楚楚&#xff0c;也就能针对性的确认为啥你的电脑跑的慢了。今天这篇笔记不讲每个任务&#xff08;或线程&#xff09;CPU的使用情况&#xff0c;而是单片机整体的CPU…