基于jqGrid表格上,实现三级表头。首先,看看实现的效果
jqGrid的demo上有这样一句话Note that group header is suppored only when useColSpanStyle is false ,指出只支持useColSpanStyle 为 false的冻结,所以采用useColSpanStyle=true冻结以后会存在一些问题。
在实现三级表头的同时,也把一些问题考虑在内了,先大概说明本人修改的代码部分,附件也会把源码和三级表头代码附上,基于4.4.4版本的,上面有标注ljq的,就是本人修改的代码。
添加和修改的代码部分有:
(1)在源码setGroupHeaders方法后面加上新方法setComplexHeaders
(2)添加冻结表头添加方法: createFrozenHtable
(3)修改源码setFrozenColumns方法,支持三级表头冻结
(4)修改源码showHideCol方法,添加三级表头处理
(5)修改源码dragStart: function(i,x,y) {//当存在滚动条时,处理冻结列拖动图标问题,
如果使用了冻结功能,当表格出现横向滚动条并将滚动条拖到右边,点击冻结列的拖动,拖动图标将会是里面表头的位置。
(6)修改源码getColumnHeaderIndex方法,冻结列的拖动图标获取不正确,需要兼容冻结情况,
if (th === headers[i].el || (ts.p.frozenColumns && th.id === headers[i].el.id)) {
(7)setFrozenColumns方法里面有个$($t).bind('jqGridOnSortCol.setFrozenColumns', function (index, idxcol) {,
如果原生二级表头采用useColSpanStyle=true,点击冻结列排序按钮没显示,
在这个地方可以修改一下变量previousSelectedTh和newSelectedTh,
可以通过colModel的index方式去取name,然后通过tr的id去获取,这样会通用很多。不过附件没有处理。
下面是调用的代码:
var complexoption = {
complexHeaders:{
defaultStyle:true,
threeLevel:[
{startColumnName:"id",numberOfColumns:2,titleText:"三级表头1"},
{startColumnName:"name",numberOfColumns:5,titleText:"三级表头2"}
],
twoLevel:[
{startColumnName:"name",numberOfColumns:2,titleText:"二级表头1"},
{startColumnName:"total",numberOfColumns:2,titleText:"二级表头2"}
]
}
};
jQuery("#list").jqGrid("setComplexHeaders",complexoption);
jQuery("#list").jqGrid("setFrozenColumns");
defaultStyle为true表示默认样式,可以配置为false试试,
threeLevel指定三级表头
twoLevel指定二级表头
附件是基于源码4.4.4基础上添加的三级表头代码。在这里和大家分享一下。由于公司项目需要,开发了此功能。
- 大小: 50.6 KB
分享到:
相关推荐
jqGrid 中的锁定固定的列并且关于jqGrid 中的一些排序的实现细节
jqgrid 采用冻结栏之后往往会出现冻结的栏的高度和非冻结栏高度的不一致,滚动滚动条的时候出现冻结栏的div小好几个px 的问题
jqGrid实现类似Excel录入功能
NULL 博文链接:https://vipshow.iteye.com/blog/1812381
jqGrid没有setComplexGroupHeaders方法,使用此插件实现三级分组表头功能
jqGrid详解及高级应用
jquey 实现grid 的列的自由拖动 和内容的自由展示和压缩 类似于excel效果。
利用jqGrid实现类似Excel录入功能
jgrid中实现显示的列的动态显示值,列可配置生成
基于jqgrid实现类似父子级树形菜单分页列表查询,让table页的行元素可以实现像ztree那样的上下级关系
自定义的用于处理GridView的固定(冻结)表头,单行或多行复杂表头不限,能兼容多种济览器版本,对tableLayout:fixed和auto这两种情况都是支持的。
通过jqgrid插件实现增删查改功能,最重要的一点:是支持文件上传功能 并显示到页面,java端采用servlet进行操作,三层架构,全球首发!
jqgrid合并行、合并列 先看示例图片最终效果: jqgrid合并单元格 .jqgrid { width: 80%; margin: 0 auto; } /* 这个代码是解决表头有一点点错位的问题 */ .ui-state-default, .ui-widget-content .ui-state...
JQuery Mobile 中实现 jqGrid 数据分组的一个小例子 程序请放在WEB服务器上运行
jqGrid 高级简化配置 使jqGrid页面代码更简化
利用jquery的插件jqgrid实现表头合并、分组、合计、例子
jqgrid实现分组显示和统计的功能,jqgrid实现分组显示和统计
jqGrid 按多个条件 或单个条件进行查询
jqGrid数据调用实例