jqgrid 是一个比较好的前端数据表格,可是因为没有很详细的API,导致有时候不知所以然。
目的:自动显示完jqgrid中每一列的内容,而不是隐藏起来。没找到jqgrid提供的自适应列宽度的方法,只好参考了下jqgrid最终生成的DOM结构,直接用jquery操作DOM结构实现自适应列宽度功能。
实现方法:用一个新的表格,样式继承自jqgrid的样式,用来计算数据源中每一列的实际宽度,然后设置标头和内容表格中用来控制宽度的单元格。
备注:jqgrid版本为jqGrid 4.4.1,如果使用其他版本的jqgrid,可能DOM结构不一样,需要参考最终的DOM结构来修改部分代码。
bug:当使用jqgrid的页头拖拽实现列宽修改时,出现的拖拽线和单元格不一致。
jqgrid自适应列宽度修改前后效果对比
前:
后:
源代码如下
<html> <head> <link href="css/ui.jqgrid.css" rel="stylesheet" type="text/css" /> <link href="css/jquery-ui-1.8.2.custom.css" rel="stylesheet" type="text/css" /> <script src="js/jquery.js" type="text/javascript"> </script> <script src="js/i18n/grid.locale-en.js" type="text/javascript"></script> <script src="js/jquery.jqGrid.min.js" type="text/javascript"> </script> </head> <body><!-----用来计算单元格内容实际长度的---------> <div class="ui-jqgrid ui-widget ui-widget-content ui-corner-all" style="position:absolute;top:-9999px"><div class="ui-jqgrid-view"> <div class="ui-jqgrid-bdiv"><div style="position: relative;"><table cellspacing="0" cellpadding="0" border="0"><tr class="ui-widget-content jqgrow ui-row-ltr" style="table-layout:table"><td id="tdCompute" style="background:#eee;width:auto"></td></tr></table></div></div></div></div> <!-----用来计算单元格内容实际长度的---------> <table id="grid"></table> <div id="pager"></div> <input type="button" value="刷新" onclick='jQuery("#grid").trigger("reloadGrid");' /> <script type="text/javascript"> $(function () { jQuery("#grid").jqGrid({ datastr: '{"pageNo":1,"pageSize":4,"list":[{"id":"1","name":"selina","age":"女","q":"418114362"},{"id":"2","name":"jqGrid没有好的中文帮助需要。。。","age":"女","q":"418114362"},{"id":"3","name":"test托尔斯泰","age":"女","q":"418114362"}],"totalCount":8,"totalPage":2,"success":true}', datatype: "jsonstring", viewrecords: true, jsonReader: { repeatitems: false, total: "lastPageNo", page: "pageNo", records: "totalCount", root: "list" }, gridComplete:function(){doResize()}, prmNames: { page: "pageNo", // 表示请求页码的参数名称 rows: "pageSize", // 表示请求行数的参数名称 sort: "sort", // 表示用于排序的列名的参数名称 order: "dir" // 表示采用的排序方式的参数名称 }, height:200, colModel: [ { name: 'id', index: 'id'}, { name: 'name', index: 'name'}, { name: 'age', index: 'age' }, { name: 'q', index: 'q' } ], rowNum: 10, rowList: [10, 20, 30], caption: "jqgrid自适应宽度" }); }); function doResize(){ var td=$('#tdCompute')//获取计算实际列长度的容器 ,tds//临时保存列 ,arr=[];//用于保存最大的列宽 //遍历每行获得每行中的最大列宽 $('#gview_grid .ui-jqgrid-htable tr,#grid tr:gt(0)').each(function(){ $(this).find('td,th').each(function(idx){ arr[idx]=Math.max(arr[idx]?arr[idx]:0,td.html($(this).text())[0].offsetWidth); }) }); $('#gview_grid th').each(function(idx){this.style.width=arr[idx]+'px'});//设置页头单元格宽度 $('#grid tr:eq(0) td').each(function(idx){this.style.width=arr[idx]+'px'});//设置内容表格中控制单元格宽度的单元格,在第一行 var total=$('#grid').closest('.ui-jqgrid-bdiv')[0].scrollWidth;//获取表格宽度 $('#grid,#gview_grid .ui-jqgrid-htable').css({width:total});//设置表头表格和内容表格宽度 $('#gbox_grid,#gview_grid,#gview_grid>div:gt(0)').css({width:total+15});//设置表头表格和内容表格父容器的宽度 } </script> </body> </html>
提供该文章的附件!
相关推荐
jqGrid是基于jquery的一个表格插件,demo中可自适应窗口大小,且单元格数据较多时,可单行显示
本篇文章主要是对jqGrid随窗口大小变化自适应大小的示例代码进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助
jqGrid 中的锁定固定的列并且关于jqGrid 中的一些排序的实现细节
jqgrid 编辑表格 一列
jqgrid合并行、合并列 先看示例图片最终效果: jqgrid合并单元格 .jqgrid { width: 80%; margin: 0 auto; } /* 这个代码是解决表头有一点点错位的问题 */ .ui-state-default, .ui-widget-content .ui-state...
jqgrid 采用冻结栏之后往往会出现冻结的栏的高度和非冻结栏高度的不一致,滚动滚动条的时候出现冻结栏的div小好几个px 的问题
下面可以获取选择一行的id,如果你选择多行,那下面的id是最后选择的行的id: ...如果想获取选择的行的数据,只要传入rowId即可,如下: var rowData = $(“#gridTable”).jqGrid(‘getRowData',rowId);
jqgrid加载本地数据并且分页例子,下载直接搭环境使用
jquey 实现grid 的列的自由拖动 和内容的自由展示和压缩 类似于excel效果。
; charset=utf-8"> <title>Insert title here ...<link type="text/css" rel="stylesheet" href="css/ui.jqgrid.css"> <script type="text/javascript" src="js/jquery-1.11.0.min.js" ></script> ...
jqGrid表格数据展示插件,可以做出很多很炫酷的效果,你值得拥有
本Demo利用Jquery的jqgrid插件利用本地资源数据,实现分页。
该方式是在jqgrid的列基础上进行编辑,为列添加保存事件,文本域和输入框采用blur失去焦点的方式进行保存,该方法含有点击为其他列赋值的功能。参考api列子并结合自己公司功能需求。
jqgrid表格,单元格合并,并显示,demo版本
JqGrid是一款功能强大的Jquery表格控件,支持排序,分组,分页,行内编辑,表格树,行内表格等多种功能,该版本为官方最新版,附带Demo
jqGrid数据调用实例
jQuery 学习之:jqGrid 表格插件 参数配置 4 jqGrid 学习 自定义搜索 14 jqGrid 学习 搜索工具栏 16 jqGrid 学习 搜索 17 jqGrid 学习 自定义格式化类型 19 jqGrid 学习 格式化 21 jqGrid 学习 自定义按钮 26 jqGrid...
jqGrid表格插件,利用自身方法获取表格的表头和表格字段;获取列名和列字段名显示在弹窗里,用复选框进行勾选 2、实现源码 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <...
jqGrid是一个非常好用的免费开源Grid组件,功能强大,适用于各种表格操作,数据管理。作为jquery插件,jqGrid使用方便,简介,美观。