响应数据格式:

easyUI在html代码中结构:

发现了什么没有,我们的表头其实是一个td在td中有一个属性field那么我们就可以获得了;

以下就是自适应代码:

  1. //添加事件
  2. function columnWidthAutoResize(){
  3. var cls=arguments[0];//需要自适应的列的名称
  4. $('#grid').datagrid({
  5. onLoadSuccess:function(data){
  6. var rows=data.rows;//得到行数据
  7. var columnMaxCharacter=new Array();//该列最大字符数
  8. //遍历所有行数据,获得该列数据的最大字符数
  9. for(var i=0;i<rows.length;i++){
  10. for(var j=0;j<cls.length;j++){//遍历需要设置的列
  11. var s=eval("rows["+i+"]."+cls[j]);
  12. //屏蔽html标签
  13. s=s.replace("<center>","");
  14. s=s.replace("</center>","");
  15. if((typeof columnMaxCharacter[cls[j]])=='undefined'){
  16. columnMaxCharacter[cls[j]]=0;
  17. }
  18. if(s.length>columnMaxCharacter[cls[j]]){
  19. columnMaxCharacter[cls[j]]=s.length;
  20. }
  21. }
  22. }
  23. //设置列宽度和字体
  24. for(var j=0;j<cls.length;j++){
  25. //得到该列的字体
  26. //    alert($("td[field='"+cls[j]+"'] div").get(0).currentStyle);
  27. // var fontSize=$("td[field='"+cls[j]+"'] div").get(0).currentStyle.fontSize;//获得字体大小
  28. //  fontSize= fontSize.replace("px","");//去掉px方便运算
  29. var fontSize=12;
  30. var w=fontSize*(columnMaxCharacter[cls[j]]+1);//求出宽度
  31. //设定该列的宽度
  32. $("td[field='"+cls[j]+"'] div").width(w);
  33. }
  34. }
  35. });
  36. }
//添加事件
                 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);
                              }
                             
                          }
                      });
                 }

下面在看如何调用:传入的参数的那一列需要自适应宽度:

  1. columnWidthAutoResize(new Array("orgname","showtime"));
  columnWidthAutoResize(new Array("orgname","showtime"));

对以上代码的解释:

  1. var cls=arguments[0];//需要自适应的列的名称
var cls=arguments[0];//需要自适应的列的名称

接受传入的需要自适应的列的名称数组;

  1. var rows=data.rows;//得到行数据
var rows=data.rows;//得到行数据

得到从服务器端响应的数据行集合

  1. var columnMaxCharacter=new Array();//该列最大字符数
var columnMaxCharacter=new Array();//该列最大字符数

记录需要设定列的字符最大数 (只是对中文考虑了,没有考虑英文) 最后的格式键值的形式   数组名['需要设定列名']=循环后最大字符

  1. for(var i=0;i<rows.length;i++){
 for(var i=0;i<rows.length;i++){

遍历所有的数据行,

  1. for(var j=0;j<cls.length;j++){//遍历需要设置的列
for(var j=0;j<cls.length;j++){//遍历需要设置的列
  1. var s=eval("rows["+i+"]."+cls[j]);
var s=eval("rows["+i+"]."+cls[j]);

动态脚本 执行取出该行对应属性的字符串  rows[1].orgname 等效

  1. //屏蔽html标签
  2. s=s.replace("<center>","");
  3. s=s.replace("</center>","");
//屏蔽html标签
s=s.replace("<center>","");
s=s.replace("</center>","");

html标签不是显示值,所以不能当作字符算;

  1. if((typeof columnMaxCharacter[cls[j]])=='undefined'){
  2. columnMaxCharacter[cls[j]]=0;
  3. }
if((typeof columnMaxCharacter[cls[j]])=='undefined'){
columnMaxCharacter[cls[j]]=0;
}

如果第一次 没有给该列设置最大字符数是undefined 给默认值0 方便后面的对比

  1. if(s.length>columnMaxCharacter[cls[j]]){
  2. columnMaxCharacter[cls[j]]=s.length;
  3. }
  4. //alert(columnMaxCharacter[cls[j]]);
  5. }
 if(s.length>columnMaxCharacter[cls[j]]){
columnMaxCharacter[cls[j]]=s.length;
}
//alert(columnMaxCharacter[cls[j]]);
}

如果当前的s的长度比之前的该列的字符数大,那么直接设置当前字符数为最大值

  1. for(var j=0;j<cls.length;j++){
 for(var j=0;j<cls.length;j++){

这个循环遍历的是得到每一列最大字符数之后的数组,cls对应columnMaxCharacter的键值的形式

  1. var fontSize=12;
 var fontSize=12;

这个是默认字体的大小,为什么写死值,是因为暂时没有找到在火狐下得到默认字体大小的方法 $("td[field='"+cls[j]+"'] div").get(0).currentStyle.fontSize(火狐不支持)

  1. var w=fontSize*(columnMaxCharacter[cls[j]]+1);//求出宽度
   var w=fontSize*(columnMaxCharacter[cls[j]]+1);//求出宽度

这里是用 字体大小 * 该列最大字符数 + 1 得到列的宽度

  1. $("td[field='"+cls[j]+"'] div").width(w);
  $("td[field='"+cls[j]+"'] div").width(w);

得到表头设置宽度,这里得到的就是表头,看上面第二张图片

转载注明请地址

easyUI版本:jQuery-easyui-1.2.5

如果大家发现其中不足,请指出,谢谢!

自适应之后效果图:

自适应之前效果图:



easyUI datagrid 列宽自适应(简单 图解)(转)的更多相关文章

  1. easyui datagird 列宽自适应

    代码如下: onLoadSuccess: function (data) { var rows = data.rows; //得到行数据 var columnMaxCharacter = new Ar ...

  2. 一步步实现 easyui datagrid表格宽度自适应,效果非常好

    一步步实现 easyui datagrid表格宽度自适应,效果非常好: 一.设置公共方法,使得datagrid的属性  fitColumns:true $(function(){ //初始加载,表格宽 ...

  3. easyui datagrid 列隐藏和显示

    easyui datagrid 列隐藏和显示 用js怎么控制列的显示和隐藏?   最佳答案   $('#grid').datagrid('hideColumn','列field');把hideColu ...

  4. WPF DataGrid 列宽填充表格方法

    WPF中使DataGrid 列宽填充表格方法,设置ColumnWidth属性为ColumnWidth="*"即可. 源码: <DataGrid AutoGenerateCol ...

  5. NPOI 列宽自适应 代码示例

    //列宽自适应,只对英文和数字有效 for (int i = 0; i <= maxColumn; i++) { sheet.AutoSizeColumn(i); } //获取当前列的宽度,然后 ...

  6. js控制easyui datagrid列的显示和隐藏

    easyui datagrid 列隐藏和显示 $('#grid').datagrid('hideColumn','列field'); //把hideColumn换成showColumn 即为显示列

  7. easyui datagrid 列的内容超出所定义的列宽时,自动换行

    定义表单  nowrap="false"可以使得列中的内容超出所定义的列宽是就会自动换行pagination : true, // 当true时在DataGrid底部显示一个分页工 ...

  8. 动态改变EasyUI grid 列宽和隐藏列

    隐藏显示 $('#yourGrid').datagrid('hideColumn','yourColumn'); $('#yourGrid').datagrid('hideColumn','yourC ...

  9. POI导出excel列宽自适应

    让单元格宽度随着列和单元格值的宽度自适应: //存储最大列宽 Map<Integer, Integer> maxWidth = new HashMap<>(); // 将列头设 ...

随机推荐

  1. Javassist进行方法插桩

    javassist官网 http://jboss-javassist.github.io/javassist/ javassist API网 http://jboss-javassist.github ...

  2. MFC常见问题以及解决方法(2)_Cstring和string互相转换

    MFC默认编码是unicode(自己改成多字符集是不行的),对话框中对字符串的处理都是宽字符,而且添加变量会默认是CString类型,当你代码中想用string但又遇到必须转为CString的情况,就 ...

  3. webpack热更新问题和antd design字体图标库扩展

    标题也不知道怎么写好,真是尴尬.不过话说回来,距离上一次写文快两个月了,最近有点忙,一直在开发新项目, 今天刚刚闲下来,项目准备提测.借这个功夫写点东西,把新项目上学到的一些好的干活分享一下,以便之后 ...

  4. TCP服务通讯

    一.TCP 1.TCP又叫做套接字,传输安全,速度慢. TCP和UTP是网络的传输协议,跟java没什么关系,没有说用java做的客户端必须连接java做的服务器,我们可以用c和c++做客户端,直接连 ...

  5. 使用Dubbo、JSF等RPC框架时,对于异常的处理

    无论是Dubbo还是JSF等RPC框架,一般都会把接口分为2部分: 1,服务端(provider) 2,客户端(consumer) 由于,客户端与服务端可能不在同一个应用中,所以客户端一般在调用服务端 ...

  6. iOS TextField输入限制(限制长度、只能输入数字,只能输入数字字母……)

    项目中各个地方都会用到TextField,textField的输入也会有各种需求,各种限制,每次用到的时候要重写一遍这些限制,导致各种垃圾代码,各种重复,有一天,我终于看不下去了,于是把textFie ...

  7. 基于Windows环境下Myeclipse10.0下载安装破解及jdk的下载安装及环境变量的配置

    jdk的安装及环境变量的配置 1.安装JDK开发环境 附上jdk安装包的百度云链接 链接:http://pan.baidu.com/s/1mh6QTs8 密码:jkb6(当然自行去官网下载最好哒,可以 ...

  8. WordPress中函数钩子hook的作用及基本用法

    WordPress 的插件机制实际上只的就是这个 Hook 了,它中文被翻译成钩子,允许你参与 WordPress 核心的运行,是一个非常棒的东西,下面我们来详细了解一下它.钩子分类 钩子分为两种,一 ...

  9. node-xlsx

    1.安装 必要组件 npm install node-xlsx -S /*Babel默认只转换新的JavaScript句法(syntax),而不转换新的API,比如Iterator.Generator ...

  10. strcpy.strcmp.strlen.strcat函数的实现

    #include <stdio.h> #include <string.h>   char *copy(char *a,char *b);//声明一个复制函数 char *ca ...