easyUI datagrid 列宽自适应(简单 图解)(转)
响应数据格式:

easyUI在html代码中结构:

发现了什么没有,我们的表头其实是一个td在td中有一个属性field那么我们就可以获得了;
以下就是自适应代码:
- //添加事件
- function columnWidthAutoResize(){
- var cls=arguments[0];//需要自适应的列的名称
- $('#grid').datagrid({
- onLoadSuccess:function(data){
- var rows=data.rows;//得到行数据
- var columnMaxCharacter=new Array();//该列最大字符数
- //遍历所有行数据,获得该列数据的最大字符数
- for(var i=0;i<rows.length;i++){
- for(var j=0;j<cls.length;j++){//遍历需要设置的列
- var s=eval("rows["+i+"]."+cls[j]);
- //屏蔽html标签
- s=s.replace("<center>","");
- s=s.replace("</center>","");
- if((typeof columnMaxCharacter[cls[j]])=='undefined'){
- columnMaxCharacter[cls[j]]=0;
- }
- if(s.length>columnMaxCharacter[cls[j]]){
- columnMaxCharacter[cls[j]]=s.length;
- }
- }
- }
- //设置列宽度和字体
- for(var j=0;j<cls.length;j++){
- //得到该列的字体
- // alert($("td[field='"+cls[j]+"'] div").get(0).currentStyle);
- // var fontSize=$("td[field='"+cls[j]+"'] div").get(0).currentStyle.fontSize;//获得字体大小
- // fontSize= fontSize.replace("px","");//去掉px方便运算
- var fontSize=12;
- var w=fontSize*(columnMaxCharacter[cls[j]]+1);//求出宽度
- //设定该列的宽度
- $("td[field='"+cls[j]+"'] div").width(w);
- }
- }
- });
- }
//添加事件
function columnWidthAutoResize(){
var cls=arguments[0];//需要自适应的列的名称
$('#grid').datagrid({
onLoadSuccess:function(data){
var rows=data.rows;//得到行数据
var columnMaxCharacter=new Array();//该列最大字符数
//遍历所有行数据,获得该列数据的最大字符数
for(var i=0;i<rows.length;i++){
for(var j=0;j<cls.length;j++){//遍历需要设置的列
var s=eval("rows["+i+"]."+cls[j]);
//屏蔽html标签
s=s.replace("<center>","");
s=s.replace("</center>","");
if((typeof columnMaxCharacter[cls[j]])=='undefined'){
columnMaxCharacter[cls[j]]=0;
}
if(s.length>columnMaxCharacter[cls[j]]){
columnMaxCharacter[cls[j]]=s.length;
}
}
}
//设置列宽度和字体
for(var j=0;j<cls.length;j++){
//得到该列的字体
// alert($("td[field='"+cls[j]+"'] div").get(0).currentStyle);
// var fontSize=$("td[field='"+cls[j]+"'] div").get(0).currentStyle.fontSize;//获得字体大小
// fontSize= fontSize.replace("px","");//去掉px方便运算
var fontSize=12;
var w=fontSize*(columnMaxCharacter[cls[j]]+1);//求出宽度
//设定该列的宽度
$("td[field='"+cls[j]+"'] div").width(w);
}
}
});
}
下面在看如何调用:传入的参数的那一列需要自适应宽度:
- columnWidthAutoResize(new Array("orgname","showtime"));
columnWidthAutoResize(new Array("orgname","showtime"));
对以上代码的解释:
- var cls=arguments[0];//需要自适应的列的名称
var cls=arguments[0];//需要自适应的列的名称
接受传入的需要自适应的列的名称数组;
- var rows=data.rows;//得到行数据
var rows=data.rows;//得到行数据
得到从服务器端响应的数据行集合
- var columnMaxCharacter=new Array();//该列最大字符数
var columnMaxCharacter=new Array();//该列最大字符数
记录需要设定列的字符最大数 (只是对中文考虑了,没有考虑英文) 最后的格式键值的形式 数组名['需要设定列名']=循环后最大字符
- for(var i=0;i<rows.length;i++){
for(var i=0;i<rows.length;i++){
遍历所有的数据行,
- for(var j=0;j<cls.length;j++){//遍历需要设置的列
for(var j=0;j<cls.length;j++){//遍历需要设置的列
- var s=eval("rows["+i+"]."+cls[j]);
var s=eval("rows["+i+"]."+cls[j]);
动态脚本 执行取出该行对应属性的字符串 rows[1].orgname 等效
- //屏蔽html标签
- s=s.replace("<center>","");
- s=s.replace("</center>","");
//屏蔽html标签
s=s.replace("<center>","");
s=s.replace("</center>","");
html标签不是显示值,所以不能当作字符算;
- if((typeof columnMaxCharacter[cls[j]])=='undefined'){
- columnMaxCharacter[cls[j]]=0;
- }
if((typeof columnMaxCharacter[cls[j]])=='undefined'){
columnMaxCharacter[cls[j]]=0;
}
如果第一次 没有给该列设置最大字符数是undefined 给默认值0 方便后面的对比
- if(s.length>columnMaxCharacter[cls[j]]){
- columnMaxCharacter[cls[j]]=s.length;
- }
- //alert(columnMaxCharacter[cls[j]]);
- }
if(s.length>columnMaxCharacter[cls[j]]){
columnMaxCharacter[cls[j]]=s.length;
}
//alert(columnMaxCharacter[cls[j]]);
}
如果当前的s的长度比之前的该列的字符数大,那么直接设置当前字符数为最大值
- for(var j=0;j<cls.length;j++){
for(var j=0;j<cls.length;j++){
这个循环遍历的是得到每一列最大字符数之后的数组,cls对应columnMaxCharacter的键值的形式
- var fontSize=12;
var fontSize=12;
这个是默认字体的大小,为什么写死值,是因为暂时没有找到在火狐下得到默认字体大小的方法 $("td[field='"+cls[j]+"'] div").get(0).currentStyle.fontSize(火狐不支持)
- var w=fontSize*(columnMaxCharacter[cls[j]]+1);//求出宽度
var w=fontSize*(columnMaxCharacter[cls[j]]+1);//求出宽度
这里是用 字体大小 * 该列最大字符数 + 1 得到列的宽度
- $("td[field='"+cls[j]+"'] div").width(w);
$("td[field='"+cls[j]+"'] div").width(w);
得到表头设置宽度,这里得到的就是表头,看上面第二张图片
转载注明请地址
easyUI版本:jQuery-easyui-1.2.5
如果大家发现其中不足,请指出,谢谢!
自适应之后效果图:

自适应之前效果图:

easyUI datagrid 列宽自适应(简单 图解)(转)的更多相关文章
- easyui datagird 列宽自适应
代码如下: onLoadSuccess: function (data) { var rows = data.rows; //得到行数据 var columnMaxCharacter = new Ar ...
- 一步步实现 easyui datagrid表格宽度自适应,效果非常好
一步步实现 easyui datagrid表格宽度自适应,效果非常好: 一.设置公共方法,使得datagrid的属性 fitColumns:true $(function(){ //初始加载,表格宽 ...
- easyui datagrid 列隐藏和显示
easyui datagrid 列隐藏和显示 用js怎么控制列的显示和隐藏? 最佳答案 $('#grid').datagrid('hideColumn','列field');把hideColu ...
- WPF DataGrid 列宽填充表格方法
WPF中使DataGrid 列宽填充表格方法,设置ColumnWidth属性为ColumnWidth="*"即可. 源码: <DataGrid AutoGenerateCol ...
- NPOI 列宽自适应 代码示例
//列宽自适应,只对英文和数字有效 for (int i = 0; i <= maxColumn; i++) { sheet.AutoSizeColumn(i); } //获取当前列的宽度,然后 ...
- js控制easyui datagrid列的显示和隐藏
easyui datagrid 列隐藏和显示 $('#grid').datagrid('hideColumn','列field'); //把hideColumn换成showColumn 即为显示列
- easyui datagrid 列的内容超出所定义的列宽时,自动换行
定义表单 nowrap="false"可以使得列中的内容超出所定义的列宽是就会自动换行pagination : true, // 当true时在DataGrid底部显示一个分页工 ...
- 动态改变EasyUI grid 列宽和隐藏列
隐藏显示 $('#yourGrid').datagrid('hideColumn','yourColumn'); $('#yourGrid').datagrid('hideColumn','yourC ...
- POI导出excel列宽自适应
让单元格宽度随着列和单元格值的宽度自适应: //存储最大列宽 Map<Integer, Integer> maxWidth = new HashMap<>(); // 将列头设 ...
随机推荐
- JPush简单Java服务端案例实现
一.激光推送准备工作 1.注册极光推送开发者账号,创建应用: 2.完成推送设置,填写应用名提交生成安装包: 3.扫码安装简单的测试apk,查看应用信息会有AppKey和Master Secret用于推 ...
- Python爬虫从入门到放弃(十二)之 Scrapy框架的架构和原理
这一篇文章主要是为了对scrapy框架的工作流程以及各个组件功能的介绍 Scrapy目前已经可以很好的在python3上运行Scrapy使用了Twisted作为框架,Twisted有些特殊的地方是它是 ...
- springmvc中的page
1.1在page类上面要打个service的注解,这样page才能传过去1.2 在page中都是写private String XX;然后source实现传值的set,get的方法, package ...
- [Hadoop源码系列] FairScheduler分配申请和分配container的过程
1.如何申请资源 1.1 如何启动AM并申请资源 1.1.1 如何启动AM val yarnClient = YarnClient.createYarnClient setupCredentials( ...
- C# string.Format()用法
C# string.Format()用法例: sting szNenryoSBTCD="abc"; Datarow[] drs = this.dtNenRyoDat.Select( ...
- php与MySQL(php内置mysql函数)
获取数据 在讲解下面的方法之前,我们首先来看一下我们的数据表的结构: mysqli_fetch_row()函数 mysqli_fetch_row()函数从结果集中取得一行,并以索引数组形式返回. 语法 ...
- 介绍一个全局最优化的方法:随机游走算法(Random Walk)
1. 关于全局最优化求解 全局最优化是一个非常复杂的问题,目前还没有一个通用的办法可以对任意复杂函数求解全局最优值.上一篇文章讲解了一个求解局部极小值的方法--梯度下降法.这种方法对于求解精度不高 ...
- cocos2dx 图片压缩工具 推荐
随着版本的第二次迭代,包体越来越大;随之而来的也就是下载量会有所影响;毕竟每增大一点包体大小,下载的玩家就会损失一小批; 但是我们的图片都经过美术压缩打包,依然包体不小; 最后发现是因为把图片都打包成 ...
- poj_2104: K-th Number 【主席树】
题目链接 学习了一下主席树,感觉具体算法思路不大好讲.. 大概是先建个空线段树,然后类似于递推,每一个都在前一个"历史版本"的基础上建立一个新的"历史版本",每 ...
- python学习之while循环
Python While 循环语句 Python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务.其基本形式为: while 判断条件: 执行语 ...