响应数据格式:
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);
}
}
});
}
下面在看如何调用:传入的参数的那一列需要自适应宽度:
columnWidthAutoResize(new Array("orgname","showtime"));
对以上代码的解释:
var cls=arguments[0];//需要自适应的列的名称
接受传入的需要自适应的列的名称数组;
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]);
动态脚本 执行取出该行对应属性的字符串 rows[1].orgname 等效
//屏蔽html标签
s=s.replace("<center>","");
s=s.replace("</center>","");
html标签不是显示值,所以不能当作字符算;
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]]);
}
如果当前的s的长度比之前的该列的字符数大,那么直接设置当前字符数为最大值
for(var j=0;j<cls.length;j++){
这个循环遍历的是得到每一列最大字符数之后的数组,cls对应columnMaxCharacter的键值的形式
var fontSize=12;
这个是默认字体的大小,为什么写死值,是因为暂时没有找到在火狐下得到默认字体大小的方法 $("td[field='"+cls[j]+"'] div").get(0).currentStyle.fontSize(火狐不支持)
var w=fontSize*(columnMaxCharacter[cls[j]]+1);//求出宽度
这里是用 字体大小 * 该列最大字符数 + 1 得到列的宽度
$("td[field='"+cls[j]+"'] div").width(w);
得到表头设置宽度,这里得到的就是表头,看上面第二张图片
转载注明请地址
easyUI版本:jquery-easyui-1.2.5
如果大家发现其中不足,请指出,谢谢!
自适应之后效果图:
自适应之前效果图:
分享到:
相关推荐
easyUI datagrid 自动调整行号大小
主要介绍了EasyUI 数据表格datagrid列自适应内容宽度的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
UI设计在一个系统中的重要性是不容忽视的,我们开发人员要做到:让用户去控制...给你的Easyui-DataGrid 表头添加一点料吧 Easyui-Datagrid—表头灵活显示http://blog.csdn.net/u010293698/article/details/47956865
easyui datagrid中实现上下左右、回车切换单元格easyui datagrid中实现上下左右、回车切换单元格easyui datagrid中实现上下左右、回车切换单元格
JS EasyUI DataGrid动态加载数据
easyui datagrid editor回车切换单元格示例,适合熟悉easyui但又不懂如何做的人员,可能参考一下源码JS。
EasyUI DataGrid过滤用法实例
两种方法将easyui datagrid 中的数据导出到Excel中,均以验证可以正常使用
如果界面比较简单---只有一个datagrid只需要把它的属性fit 设置为true就能实现自动适应窗体。如果在datagrid上方还有其他div的话,datagrid就不能很好的自动适应窗体。如查datagrid有分页控件,分页控件就看不到...
jQuery EasyUI Datagrid 用户列表鼠标悬停/离开数据行时显示人员头像(onMouseOver/onMouseOut) Demo 扩展 jQuery EasyUI Datagrid 数据行鼠标悬停离开事件,源码奉献!!!
easyui datagrid 多条件筛选 可复选 过滤 例如过滤200-300 500-600 类似淘宝筛选 但允许复选
easyui datagrid 导出到excel,图解
jquery easyui 扩展 datagrid 自定义动态隐藏显示列
easyUI datagrid 行上移,下移,置顶,置底的方法
解决EasyUIdataGrid列比较多,无数据,列展现不全
在easyui 的datagrid编辑状态下实时更新其他处于编辑或者没在编辑下的列值,并在结束编辑后得到的row的数据为更改后的数据。
EasyUI Datagrid 中文排序的问题 解决了WEB端和后台(Oracle、MySQL)中文排序问题
一个update扩展方法 文档中一种是比较笨的方法 一次只能修改一个列而且受列编辑类型影响(比如number datetime)扩展一次编辑多列,不受编辑类型影响,没有编辑属性也可以。
jquery easyui demo 网页下载下来打包了,还有datagrid简要说明