扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
这篇文章将为大家详细讲解有关EasyUI如何实现数据表格datagrid列自适应内容宽度,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
建网站原本是网站策划师、网络程序员、网页设计师等,应用各种网络程序开发技术和网页设计技术配合操作的协同工作。创新互联公司专业提供成都网站建设、成都网站制作,网页设计,网站制作(企业站、成都响应式网站建设公司、电商门户网站)等服务,从网站深度策划、搜索引擎友好度优化到用户体验的提升,我们力求做到极致!项目初期在加载数据表格的时候为了提高表格数据渲染速度,设置了默认宽度。
现需求需要加一个表格自适应的功能,触发改功能,改变列宽度,但是不重新渲染表格,不发生数据请求。
设计思路,遍历每项的所有数据,比较字节符串长度,取大长度。再用大长度和标题长度比较,如果标题长就去标题长度,如果字符串长,就取字符串的。
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列自适应内容宽度”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
当前题目:EasyUI如何实现数据表格datagrid列自适应内容宽度-创新互联
网站地址:http://kswjz.com/article/djigii.html
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流