EasyUI 数据表格datagrid列自适应内容宽度的实现
前端  /  管理员 发布于 4年前   631
项目初期在加载数据表格的时候为了提高表格数据渲染速度,设置了默认宽度。
现需求需要加一个表格自适应的功能,触发改功能,改变列宽度,但是不重新渲染表格,不发生数据请求。
设计思路,遍历每项的所有数据,比较字节符串长度,取最大长度。再用最大长度和标题长度比较,如果标题长就去标题长度,如果字符串长,就取字符串的。
js
//表格自适应方法function changeWidth(agstr){ var dg = $('#'+agstr); dg.datagrid("loading");//显示加载状态$$$ var fn=function(){ var opts = dg.datagrid('getColumnFields'); //获取表头所有field var data=dg.datagrid('getData');//获取数据表格请求的数据 var role = data.rows;//数据表格请求的数据,即每行的数据 for (var i = 0; iro_width){ ro_width = StringTolog(role[j][field]);//比较当前field列的每条数据长度,取最大值 } } if(ro_width 调用以上两个方法就可以实现列宽自适应。
但是发现执行此方法之后,表头和表身的单元格宽度都已经固定写死,如果此时触发调整列宽大小事件,只能改变表头宽度,不会改变表身列宽,所以自适应列宽后可以取消改变列宽大小的功能
封装冻结列方法:
//冻结列,禁止调节列尺寸$("#id").datagrid('lockColumn',field值);$.extend($.fn.datagrid.methods, { lockColumn: function(jq, field){ return jq.each(function(){ var p = $(this).datagrid('getPanel'); // 获取数据表格面板 var cell = p.find('div.datagrid-header td[field=' + field + '] > div.datagrid-cell'); // 获取数据表格监听改变列宽事件的节点 cell.resizable({disabled:true}); // 禁止改变列宽 }); }});在给每列设置宽度的时候调用该方法
dg.datagrid('lockColumn',field);changeWidth 方法中的※※※位置
在重新定义列宽的时候如果数据量过大会导致页面卡顿,可以再触发该方法的开始位置调用datagrid的loading方法,结束时调用loaded方法,changeWidth 方法中的$$$位置
因为在触发表格自适应方法后调用了datagrid的冻结列方法,所以再重新查询数据的时候表头不会重新渲染,只有表身会,,表身就会恢复默认宽度,就会出现表头和表身对不齐的问题,表头也不能改变宽度。
解决办法,在数据表格数据加载成功时取消冻结列,清空之前计算的列宽
封装取消冻结列方法
//取消冻结列,允许调节列尺寸$("#id").datagrid('unlockColumn',field值);$.extend($.fn.datagrid.methods, { unlockColumn: function(jq, field){ return jq.each(function(){ var p = $(this).datagrid('getPanel'); // 获取数据表格面板 var cell = p.find('div.datagrid-header td[field=' + field + '] > div.datagrid-cell'); // 获取数据表格监听改变列宽事件的节点 cell.resizable({disabled:false}); // 允许改变列宽 }); }});数据加载成功触发
onLoadSuccess: function (data) { var opts = $(this).datagrid('getColumnFields'); //获取表头所有field for(var i=0;i
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
您可能感兴趣的文章:
- Easyui Datagrid自定义按钮列(最后面的操作列)
- jQuery EasyUI学习教程之datagrid点击列表头排序
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号