打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
ligerUIGrid自适应BUG的解决方法
版权声明:本文为博主原创文章,未经博主允许不得转载。
最近在开发的时候,使用到了前端开发框架ligerUI,但是在使用的过程中发现,ligeruiGrid在界面缩放的时候会出现右边空白,经过自己的几番调试,发现了是几个div的样式宽度没有自适应导致的,由于项目觉得这个BUG不好,所以我自己捣鼓了下,大致解决了自适应的问题。因对js不是很熟悉,所以在通用性上,可能还有问题存在,大神勿喷。希望能帮到大家。
ligerui版本:1.3.2
1.ligerUIGrid出现的布局问题:
没修改前,使用的时候,一旦缩放,就会出现这样的空白区域,看起来就很奇怪。
2、修改方法:
2.1、打开ligerui.all.js文件,在13800行左右(_onResize方法中),拷贝以下标红代码,
[javascript] view plain copy
if (g.enabledFrozen())
{
var gridView1Width = g.gridview1.width();
var gridViewWidth = g.gridview.width();
g.gridview2.css({
width: gridViewWidth - gridView1Width
});
//新增,调用grid自适应方法
<span style="color:#ff6666;"> g._f_gridLayout_autoAdapt(gridViewWidth - gridView1Width);//将这行代码拷贝粘贴即可</span>
}
2.2 、打开ligerui.all.js文件,新增function_f_gridLayout_autoAdapt,最好在_onResize方法之后添加,[javascript] view plain copy
<span style="color:#ff0000;">/*****自己添加的grid自适应方法--start*******/
_f_gridLayout_autoAdapt:function(ChangedWidth) {
var g = this;
for (var level = 1; level <= g._columnMaxLevel; level++)
{
//1、修改column宽度
var columns = g.getColumns(level);           //获取level层次的列集合
var colNum = columns.length; //要进行计算的列数
$(columns).each(function (i, column)
{
if(column.isrownumber || column.hide || column.ischeckbox){//扣除序号列和隐藏列
colNum = colNum - 1;
}
});
var columnWidth = parseInt(ChangedWidth / colNum);//计算修改后的列宽度
/****************20160310修改标题宽度(排除序号列)---start**************/
jQuery(".l-grid-header2 .l-grid-hd-cell").css({width: columnWidth});//修改标题宽度(排除序号列)
/****************20160310修改标题宽度(排除序号列)---end**************/
/****************20160309修改标题宽度(排除序号列),最初的做法,影响界面显示效率---start**************/
/*$(columns).each(function (i, column)
{
if(column.isrownumber || column.hide){
}else {
column._width = columnWidth;//宽度赋值
g._setColumns(column);//修改列
}
});*/
/****************20160309,最初的做法,影响界面显示效率---end**************/
//2、修改l-grid-header-inner的宽度
if(g.gridview2 != undefined){
var gridHeaderInner = g.gridview2[0].children[0].children[0];
if(gridHeaderInner != undefined){
jQuery("." + gridHeaderInner.className).css({width: ChangedWidth});
}
}
//3、修改l-grid-body-inner的宽度
var gridBodyInner = g.gridbody[0].children[0];
if (gridBodyInner != undefined){
var str = "." + gridBodyInner.className;
jQuery(str).css({width: ChangedWidth});//修改l-grid-body-inner的宽度
//4、修改每行数据,每个单元格的宽度
var bodyTable = gridBodyInner.children[0];
if(bodyTable != undefined){
var gridRows = bodyTable.children[0].children;
if(gridRows != undefined){
/****************20160310,修改每行数据,每个单元格的宽度(排除序号列)、修改每行数据,每个单元格的内部存放字体的元素宽度(排除序号列)---start**************/
var rowCellClassName = gridRows[0].children[0].className;
var rowCellInnerClassName = gridRows[0].children[0].children[0].className;
if(rowCellClassName != null && rowCellClassName !=""){
//修改每行数据,每个单元格的宽度(排除序号列)
jQuery(".l-grid-body2 ." + rowCellClassName).css({width: columnWidth});
}
if(rowCellInnerClassName != null && rowCellInnerClassName !=""){
//修改每行数据,每个单元格的内部存放字体的元素宽度(排除序号列)
jQuery(".l-grid-body2 ." + rowCellInnerClassName).css({width: columnWidth-10});
}
/****************20160310---end**************/
/****************20160309,修改每行数据,每个单元格的宽度(排除序号列)、修改每行数据,每个单元格的内部存放字体的元素宽度(排除序号列);最初的做法,影响界面显示效率---start**************/
/*$(gridRows).each(function (i, gridRow){
var cells = gridRow.children;
if(cells != undefined){
$(cells).each(function (i, cell){
if(cell.style.display =="none"){
//不改变
}else{
cell.style.width = columnWidth;//修改每行数据,每个单元格的宽度
if(cell.children[0] != undefined){
if(cell.children[0].className =="l-grid-row-cell-inner"){
cell.children[0].style.width = columnWidth-10;//修改每行数据,每个单元格的内部存放字体的元素宽度
}
}
}
});
}
});*/
/****************20160310,最初的做法,影响界面显示效率---end**************/
}
}
}
}
},
/*****自己添加的grid自适应方法--end*******/</span>
3、测试代码可行性:启动项目,访问页面。
初始化:
收缩后:
可以看见,缩放前,缩放后再没有出现原先的空白区域了的。
备注:
1、另外还有一种方式就是在不改动源码的情况下,直接将grid对应的样式取出来,修改样式布局,同样可以达到效果(亲测可行)。不过修改太过麻烦,不如直接在源码里面修改,如果有兴趣的朋友,可以慢慢研究哈。
2、当浏览器窗口改变大小时,grid布局无法自适应,则在ligerGrid.js中添加上述代码(代码添加位置为:与ligerui.all.js相同代码出现的位置)。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
WPF笔记(2.4 Grid)
grid一系列操作比如分组。。4.0
工作表单元格的默认大小是多少?如何将其转换为正方形?
ExtJS之布局篇
[转载]ExtJS3.0之布局一
Excel中精确设置列宽
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服