热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

比较JqGrid与XtraGrid

此只能比较两者的功能优劣,实现某种功能、效果的方便性和效率。首先分别粗略介绍XtraGrid和jqGridDevExpress是目前.net下最为强大和完整的UI控件库

此只能比较两者的功能优劣,实现某种功能、效果的方便性和效率。首先分别粗略介绍XtraGrid和jqGrid

  DevExpress是目前.net下最为强大和完整的UI控件库, XtraGrid是这个控件库中重要的控件之一。在XtraGrid中集成了大量的高级特征,所以使用它进行开发的人员只需要对其属性进行简单的设置或编 写少量的代码,就能创建出十分美观的界面,从而使开发的工作效率大幅提高。

  特点如下

  • 完全支持ADO.NET,一闪而过的数据装入速度,XtraGrid充分利用内建的ADO.NET功能。使用这些新的数据访问架构并且内部数据模块与数据表达分离,在任何数据装入模式下XtraGrid不 使用任何额外的缓冲,即使当列分组时,XtraGrid使用很小的内存并执行请求操作与从数据源获取数据一样快速。

  • 高级非绑定模式支持 , XtraGrid可以和所有支持List或ITypedList以及其继承接口一起工作。

  • 带状的/漂亮的列, 当屏幕显得很很珍贵时,您能够用带状列最大化可见列的数量呈现给客户。您甚至非常容易和简单地能够在列头显示图像。

  • 自动数据分组并支持连接点分组 ,允许您的用户分组储存在XtraGrid中的数据,而且列无限制,使他们能够从未有过的分析和编辑信息功能。

  • 自动列分组,利用XtraGrid,您能够排序无限制数量的列,不需要写一行代码;

  • 自动数据过滤 , 通过类似Excel风格的过滤特征,您能够基于列内容过滤数据 - 任何列。过滤表达式甚至可以显示在网格的底部,提醒您的用户他们正在查询什么内容。您还能够创建您自定义的过滤对话框匹配用户需要的过滤特征。

  • 真正主细数据支持(Master-Detail) , XtraGrid允许您在绑定或非绑定模式下建立和表示主细(master-detail)信息,您甚至能够使用下拉模式放缩每个细项级,允许简单的维护最复杂的关系设置。

  • CustomDraw自定义绘制, 需要绘制任何Grid对象 - 行、列头等?用XtraGrid没问题,只有您的想象是限制。

  • 高级设计时支持 , XtraGrid提供高级的设计时编辑器,允许您控制所有XtraGrid的外观而不需要写任何一行代码。使用高级设计时支持您能够管理高级特征如级、风格、列和概括等。

  • 完全的数据概括, 概括允许您直接在Grid中表示统计信息如MIN, MAX, AVG, SUM和COUNT而不必采用古老而难看的单独的edit控件。您甚至允许您的用户用分组头和注脚概括分块数据。

  • 基于View的架构, 在XtraGrid中的每一级能够通过不同的View表达。XtraGrid使用标准的行列View以及CardView,类似Microsoft Outlook。所有Views都能够很快的改变。

  • 每列多种编辑器 - XtraGrid的同一列可以使用不同的编辑器。

 

 

 

  jqGrid是一个jQueryplugin,提供grid操作界面,并支持经Ajax连结服务器上的资料源。jqGrid在共同的基础结构上,提供数种操作模式,分别包装于不同的档案之中。除了共享的数个档案之外,使用者按需要选择操作模式,并使用对应的程序档。可惜各操作模式之间常见功能雷同之处,程序重用性却未进一步整合、提升,而各模式的更新速度也不太一致。

  特点如下

  • 完整的表格呈现与运算功能,包含换页、栏位排序、grouping、新增、修改及删除资料等功能。

  • 客制化的工具列。 

  • 预设的Navigator 工具列,可以很容易的使用新增、删除、编辑、检视及搜寻等功能。 

  • 完整的分页功能。 

  • 按下任一栏位的标头,皆可以该栏位为排序项目。无论是升幂或降幂皆可。 

  • 预设的action formatter,可以快速而直觉地对每笔资料做运算。 

  • 除了jqGrid lib 所提供之formatter(包括emaillinkselectcheckboxdate 外,开发者可以从资料来源自订资料显现方式,即所谓的custom formatter

   

两者的不同归结为以下方面:

表格视图

  XtraGrid中有4种类型的View,它们分别是:GridView(二维表格视图)、BandedGridView(带状二维表格视图)、AdvBandedGridView(高级的带状二维表格视图,增加了一些操作功能)、CardView(卡片视图)。这4种类型的View都是从ColumnView中继承而来,而ColumnView又是从BaseView继承来的。其中BaseView和ColumnView都是抽象类(abstract),不能实例化。

  由于每种视图都是一个类,它们对基类ColumnView重写不尽相同,故某些效果在一种视图上可以实现,换了另一种视图就不行了。

  jqGrid同样也有二维表格视图,带状二维表格视图,树状视图。

  对于二维表格视图与带状表格视图,它们的区别只在于在属性处添加多一个表头分组,对表格的操作完全一样,故更换视图的类型后其实现功能和效果不会有差异。

模板列

     XtraGrid提供比较丰富的模板列类型,但是在自定义模板方面就欠缺了,一个模板列只能使用一种类型,比如在一个列里头想放一个不可编辑的文本框,一个图片按钮,还有一个日历控件,这样就办不到了。而且那个模板列里只能使用XtraGrid它定义的那套模板列类型,想使用自己定义的类型或者用微软原本定义的控件也不行。用它原本的控件好处是get/set值比较方便,同时也使得模板没办法使用别的控件。

  jqGrid它本身没有提供模板列类型,就像.NET本身的GridView那样,可以往模板里添加多个控件,个人感觉jqGrid的模板列很自由很开放,可以在模板中可以放置一个或多个控件,可以是自己写的,也可以是其他的插件。

分页

  XtraGrid提供了分页栏,只需要把gridControl 的UseEmbeddedNavigator 属性设为true则可。XtraGrid实现分页功能有两种办法,一种则是利用XtraGrid本身的Server Mode模式 。但这种方式有诸多弊端:1)不能编辑、增加、删除数据; 2)不能通过显示值来进行排列和过滤数据(但可以用编辑值来进行这些操作);3)用户排序时不触发ColumnView.CustomColumnSort事件; 4)用户分组时不触发GridView.CustomColumnGroup事件; 5)用户计算汇总时不触发GridView.CustomSummaryCalculate事件; 6)在Server Mode模式下,数据表的主键不能由多个列组合而成。另一种方式就是利用SQL的分页查询。

  jqGrid也提供了分页栏,它的分页方式与XtraGrid的第二种方式类似,采用SQL的分页查询。

  个人认为采用SQL分页查询来实现分页这方式比较好,即使XtraGrid的Server Mode模式不存在那么多的弊端,使用了Server Mode模式,万一将来的某一天更换了控件,甚至从C/S模式换成B/S模式,这样要更改的代码量会比利用SQL分页查询的代码量要大。

数据源

  XtraGrid的数据源绑定与传统GridView的数据源绑定有所不同,经过绑定的操作后,XtraGrid上的数据仍然与数据源的数据同步,即修改了XtraGrid里的数据,数据源的数据也同样会被修改,修改了数据源的数据,XtraGrid里的数据也会跟着被修改。而且它可以很方便地获取到某一行记录的对象,比如将一个List绑定到XtraGrid中,XtraGrid可以通过 GetRow 方法获取某行的People对象。还有一个优点就是若想批量修改某些数据,可直接对数据源进行操作,这样就不需要遍历单元格去修改。

  jqGrid绑定了数据源之后,表格里的数据与数据的数据就与GridView的情况一样,两者是不相关的,修改了一方的数据,对另一方没有任何影响。

 

 

总结 

  综合了jqGridXtraGrid的优点,个人认为一个好的网格类控件(或插件)除了有绚丽的外观以外,还应该具备以下功能:

  • 具有统计运算的功能;

  • 具有父子表的功能;

  • 对某列排序,分组,筛选功能;

  • 提供工具栏方便增删改查操作;

  • 拥有多种分页读取数据功能(如传统的通过分页栏读数据和通过滚动条控制分页度数据);

  • 支持多种类型的数据集合作为数据源;

  • 能够方便地获取到单元格的信息;

  • 对表格数据的更改能同步到原本绑定的数据源集合中;

  • 提供简便的方法对数据的格式进行验证;

  • 方便数据导入导出;

  • 能够方便地设置条带状的列;

  • 提供多种编辑器;

  • 模板允许多种编辑器自由组合使用,而且可以添加任意的控件(插件进入模板);

  • 支持快捷键操作,减少用户在鼠标与键盘上切换;

  • 根据用户需要对列的先后顺序进行重新排列;

以上纯属个人看法,有什么不足缺漏或错误的,欢迎指正。



推荐阅读
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文详细介绍了MySQL表分区的创建、增加和删除方法,包括查看分区数据量和全库数据量的方法。欢迎大家阅读并给予点评。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • 本文介绍了在MFC下利用C++和MFC的特性动态创建窗口的方法,包括继承现有的MFC类并加以改造、插入工具栏和状态栏对象的声明等。同时还提到了窗口销毁的处理方法。本文详细介绍了实现方法并给出了相关注意事项。 ... [详细]
  • Vagrant虚拟化工具的安装和使用教程
    本文介绍了Vagrant虚拟化工具的安装和使用教程。首先介绍了安装virtualBox和Vagrant的步骤。然后详细说明了Vagrant的安装和使用方法,包括如何检查安装是否成功。最后介绍了下载虚拟机镜像的步骤,以及Vagrant镜像网站的相关信息。 ... [详细]
  • Postgresql备份和恢复的方法及命令行操作步骤
    本文介绍了使用Postgresql进行备份和恢复的方法及命令行操作步骤。通过使用pg_dump命令进行备份,pg_restore命令进行恢复,并设置-h localhost选项,可以完成数据的备份和恢复操作。此外,本文还提供了参考链接以获取更多详细信息。 ... [详细]
  • Android日历提醒软件开源项目分享及使用教程
    本文介绍了一款名为Android日历提醒软件的开源项目,作者分享了该项目的代码和使用教程,并提供了GitHub项目地址。文章详细介绍了该软件的主界面风格、日程信息的分类查看功能,以及添加日程提醒和查看详情的界面。同时,作者还提醒了读者在使用过程中可能遇到的Android6.0权限问题,并提供了解决方法。 ... [详细]
  • 从批量eml文件中提取附件的Python代码实现方法
    本文介绍了使用Python代码从批量eml文件中提取附件的实现方法,包括获取eml附件信息、递归文件夹下所有文件、创建目的文件夹等步骤。通过该方法可以方便地提取eml文件中的附件,并保存到指定的文件夹中。 ... [详细]
  • 广度优先遍历(BFS)算法的概述、代码实现和应用
    本文介绍了广度优先遍历(BFS)算法的概述、邻接矩阵和邻接表的代码实现,并讨论了BFS在求解最短路径或最短步数问题上的应用。以LeetCode中的934.最短的桥为例,详细阐述了BFS的具体思路和代码实现。最后,推荐了一些相关的BFS算法题目供大家练习。 ... [详细]
  • Iwanttointegratesort,order,maxandoffsetinafindAllquery.Thefollowingworksfine:我想在fin ... [详细]
  • QuestionThereareatotalofncoursesyouhavetotake,labeledfrom0ton-1.Somecoursesmayhaveprerequi ... [详细]
  • oracle11.2.0.4的rac集群,其中一个节点出现故障,集群无法启动,使用crsctlcheckcrs查看集群状况如下:[grid@db2client]$crsctlche ... [详细]
  • c# java socketn 字节流_C#Socket编程详解(一)TCP与UDP简介
    一、TCP与UDP(转载)1、TCP1.1定义TCP(TransmissionControlProtocol)传输控制协议。是一种可靠的、面向连接的协议(eg:打电话)、传输效率低 ... [详细]
author-avatar
会丶有那么一天
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有