`
zhangyaochun
  • 浏览: 2561279 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

浅谈grid的设计与性能

阅读更多

其实无论是入行开始还是到现在,对于grid自己也算比较多的研究和设计。从开始的jquery ui datagrid 到jqgrid 到阳哥的新作tangram grid再到自己的phoenix grid(自己的组件库的扩展ui控件)

 

慢慢地发现,一个完备的grid应该具备以下

 

1. 从性能角度出发的设计

 

 

  • 是否支持分页
     -----很多人觉得啊,这个当然了,是的,
          a .  分页在初始话数据render的时候,就表现的比较明显,特别是大数据量。
        
          b .  你的控件支持自定义的分页配置吗?因为很多项目在改造过程中可能有它自己的分页,只是tableToGrid
          c .   你的分页渲染的时候有图片的请求吗?还是直接用特殊字符►|这些来替代(jquery ui custom的素材)
          d.    你的分页算法是否合理。
  • 关于滚动条
    -----这个一般如果你只是简单地去用jqgrid或者进行二次封装jquery ui grid的话你可能考虑的不是很多,或者你追求的是怎样才能设置width满铺,最大不出现滚动条
          a. 个人比较喜欢阳哥的做法:在渲染期多生成两个个div作为横向纵向,绑定事件
          b.  可能编写的时候需要考虑到兼容性(类似于我写的dommousescroll与mousewheel的区别)
  •  部分dom操作的优化
    -----举个简单的例子,我要编写开发的api如获取选中行(单行),获取选中行(多行)

 代码1: /**
	 * 获取选中行数据(只返回一行数据)
	 */
	getSelected:function(){
		//先判断是否有选中
                if(this.selectedRows.length>0){
		
		}else{
		       //没有选中返回null
                 	return null;
		}
	},

   /**
      *获取选中行数据(多行)
      */
      getSections:function(){
          var result=[],
                grid=this;
          //然后去遍历
         ....
         return result;
     },
 
 代码2:
/*
合并getSelected和getSelections
到getSelectRows
*/
getSelectRows:function(){
         //不判断是否有选中行
    var grid = this,
          result =[];
    //直接遍历
    。。。。。
   return result;
},

/*
getSelected 获取选中行数据(单行)
*/
getSelected:function(){
    var rows = this.getSelectRows;
    return rows.length >0 ? rows[0] : null;
},

/*
getSelection 获取选中行数据(多行)
*/
getSelection:function(){
   return this.getSelectRows;
}
 
          这个做法是jquery ui grid的思想来的,其实api的耦合度自己一定要把握好,设计模式的思想也可以参考进来。
          同样的做法可以在比如对列的显示和隐藏上面操作
  • 有没有好的事件冒泡控制
     这个其实还是说起来比较简单的,在点击cell的时候出发onCellClick----再到onRowClick

  •  有没有回收机制
    我们很明白,对于数据呈现的容器,每一次的dom操作是很多的,如何在重新render或者需要执行回收的时候去clear       一下。

  • 关于全选和取消全选按钮的操作的效率
    这个如果你用过jquery ui datagrid的话,你可能也抱怨过当数据量达到100条以上的时候,点击全选按钮,会出现3秒左右的延迟,下面的数据列才会勾选上。当然网络上很久前就有了解决方案。

    关于这点还是细说一下,我从以前接触到现在多还是支持我们的options可以设置selectMode(选中模式0-不选折 1-单选 2-多选)--或者很多人用过jqgrid的multiselect,但是还是希望细化到单选还是多选。 这样的属性去控制页面的渲染checkbox。

  • 关于渲染后的样式控制
    很多人会觉得Jqgrid这种tableToGrid后,样式太过冗余,所以我建议,如果你自己在设计grid的然后的时候一定区分好自己的文档树

  • 还有就是附加的功能插件
   现在的很多grid插件多支持拖拽,键盘操作,可编辑,导入导出(自己入行菜鸟的时候阳哥让写了导出excel不走后台,不过后来的方案还是不错,给出confirm的方式去选择请求后台返回数据java方式的模板导出,还是页面抓取数据进行导出。性能和选择方式的扩展让用户会感觉好一点)

  • 与表单和多个grid绑定的功能
  比如以前做的定义绑定默认新增修改删除的按钮,实现默认常见功能,让一般的开发者不用考虑过多的交互。当然如果有业务逻辑的话,可能就需要增加一些逻辑判断等等。

  • 困惑
  其实以前作为技术研发部门的一名开发人员,时常被各个产品线或者项目组抱怨你们设计的组件扩展性不是很好,其实一直在想,作为底层的编写人员,我们不应该过多地带入一些业务的逻辑到我们的grid里面,但是必要的接口还是得预先地预留好。这说的简单,但是这个“”的把握很重要。

  • 还是要说一下:一份好的说明文档会比什么多好,配置,api的例子也好或者ppt简介,(当然这一点很赞一下jqgrid的demo地址,以前一直准备自己写个jqgrid中文的详细文档的,一直没有完善到最后,完善后立刻上传大家学习用)会让别人更简单地去认识你这个东西:简单可信赖


简单地说了一些,日后继续补充吧。。。。。。。一个好的grid应该会慢慢地出来,慢慢地。。。。
  • 大小: 861 Bytes
分享到:
评论
1 楼 courage207 2011-10-14  
 

相关推荐

    grid+report报表设计器破解版

    Grid++Report 是一款高性能的报表开发工具,特别适用...总之,选择Grid++Report 报表控件,将给大家带来轻松愉快的报表与打印开发过程,尽享其中独具匠心、简单明快、功能强大的美妙,为您的设计带来美观、高质、高效。

    Grid++Report 报表设计器

    Grid++Report是一款C/S与B/S集成报表工具,功能全面易学易用。C/S开发适用于VB.NET,C#,VB,VC,Delphi,BCB,VFP,易语言等。B/S开发适用于ASP.NET,ASP,PHP,JSP等,支持所有WEB服务器。开发C/S报表与B/S报表共享相同的...

    大数据量高性能前端表格grid 动态加载数据

    大数据量高性能前端表格grid 动态加载数据 可以做到 一边滚动一边加载新的dom,并同时删除不可见的dom,防止因数据过大引起的dom卡顿

    grid设计辅助工具 通过图形化界面来辅助进行grid布局设计

    grid设计辅助工具。通过图形化界面来辅助进行grid布局设计

    Grid++报表设计器

    新锐Grid++报表设计器。 很好用的一个报表设计器。

    extjs设计实例包含Grid和布局的设计

    extjs设计实例包含Grid和布局的设计

    Selenium Grid简介与使用

    Selenium Grid简介与使用

    grid安装与配置

    其性能与稳定性在生产企业中得到广泛应用。解决了许多存储的问题。在11G数据库中增加更多的新功能。ASM能力更强大了,还引入了ACFS集群文件系统的能力。 下面foway将从GRID安装开始到ASM实例配置,由ASM磁盘建立到扩...

    Grid++Report

    Grid++Report 是一款高性能高效率的报表开发工具,既可开发桌面软件的报表与打印系统,也可开发WEB(B/S)软件的报表与打印系统。提供一个具有超强数据展现功能的数据网格(DataGrid)部件,制作各种表格报表非常简便;...

    ATGrid报表控件 wintable报表设计器

    <br>wintable报表设计器 ------------------------------------ ·界面类似于Excel软件,会Excel就会WinTable; ·可以制作各种复杂报表; ·完全解决数据统计、查询的繁琐问题; ·无需编程...

    VB中Felx Grid控件设计时如何改变列宽

    VB中Felx Grid控件设计时如何改变列宽

    grid嵌套grid

    grid嵌套grid 实例,写的杂没整理,结合博客看吧

    Grid++Report 报表开发

    Grid++Report 是一款高性能的报表开发工具,特别适用于管理信息系统,如ERP、进销存、财务等软件的报表开发。针对票据套打进行了专门实现,也是实现票据打印的好工具。Grid++Report是完全可编程的报表工具,是制作...

    streamlit-aggrid examples

    Streamlit网页中功能强大的表格显示与处理组件:streamlit-aggrid 中样例源代码,版本为streamlit-aggrid==0.2.3-2。 文件列表如下: custom_css.py example.py example_highlight_change.py fixed_key_example.py ...

    Grid Generation Methods(网格生成方法)

    Grid Generation Methods(网格生成方法) Grid Generation Methods 2nd Edition Dec 2009 Grid Generation Methods 2nd Edition This book is an introduction to structured and unstructured grid methods ...

    VFP GRID 合计行,与双层表头控件

    VFP GRID 合计行,与双层表头控件

    Grid++Report 编程参考

    Grid++Report 是一款高性能高效率的报表开发工具,既可开发桌面软件的报表与打印系统,也可开发WEB(B/S)软件的报表与打印系统。提供一个具有超强数据展现功能的数据网格(DataGrid)部件,制作各种表格报表非常简便;...

    Grid++Report 6.6.7.0 Demo模板例子 免费报表开发工具

    Grid++Report是一款同时支持C/S软件(桌面程序)与B/S软件(WEB程序)开发的报表工具,功能全面易学易用。C/S开发适用于VB.NET、C#、VB6、VB、VC、Delphi、C++Builder、QT与易语言等。B/S开发适用于ASP.NET(C# & VB.NET)...

Global site tag (gtag.js) - Google Analytics