我最近将jqGrid从旧版本(4.4.5)升级到(4.13.4-pre)
"autowidth": false,
"shrinkToFit": true,
"loadonce": true,
"scroll": 1,
FWIW - 我在镶板布局中使用它(通过jQuery UI Layout实现)
一切都很好,两个版本最初加载我的数据并显示良好 - 无需更改我的启动网格选项或colModel等。
但是,如果我将鼠标悬停在数据区域上并使用滚轮开始滚动数据,最终4.13.4版本的jqGrid将闪烁或刷新以构建下一页数据并且#39 ;当它引入这里显示的不需要的滚动条状态时:
我已经有一些调整大小的逻辑,以便在调整父面板大小时,网格捕捉到正确的位置 - 与用户调整窗口大小时相同。所有这些功能在两个版本的jqGrid上都能正常运行 -
想知道在此期间我是否遗漏了一些东西 - 但我觉得我发现了一个错误。
更新
我已经能够将jqGrid控件与前面提到的jquery UI Layout脚本隔离开来。不良行为仍然存在。
当页面加载完毕后,我将这样的脚本调用到"补丁"我的jqGrid的宽度和大小,所以它适合所需的父DIV:
function patchUpJQGrid_FitInParentDiv() {
var newWidth, newHeight, myGridCtrl;
myGridCtrl = $("#mainGridControl");
newWidth = $("#parentMainGridDiv").width() - 50;
newHeight = $("#parentMainGridDiv").height() - 50;
myGridCtrl.jqGrid('setGridWidth', newWidth, false);
myGridCtrl.jqGrid('setGridHeight', newHeight);
}
window.setTimeout(patchUpJQGrid_FitInParentDiv, 5000);//ensure jqGrid correctly sized
因此,在上面的脚本运行之后,UI都已正确设置和调整大小..但随后您开始滚动(使用鼠标滚轮或使用滚动条),最终网格宽度忽略最初通过&#39指示的内容; setGridWidth'现在,如果你想继续滚动,父DIV本质上是掩盖或遮蔽你需要的垂直滚动条..
解
有关详细信息,请参阅下面接受的答案。我想提一下,这些添加的选项(从另一个Oleg答案中复制)正在帮助我在我的jqGrid实例中实现我想要的东西(参见updated jsfiddle demo)
cmTemplate: { autoResizable: true },
autoResizing: { compact: true },
autoresizeOnLoad: true
答案 0 :(得分:1)
在jqGrid中使用的某些jqGrid选项在使用scroll: 1
时是错误的。您使用patchUpJQGrid_FitInParentDiv
修复了旧jqGrid中的问题。要使代码在免费的jqGrid中工作,您只需要修复jqGrid的原始选项。
选项中的主要问题是使用height: 'auto'
并指定无width
选项。如果您使用scroll: 1
,那就错了。应为height
和width
选项指定任何固定值。您可以稍后修改这些值,但初始值非常重要,并且会修改调整大小的行为。
您需要做的是更改选项
...
pager: '#pager1',
altRows: true,
altclass: 'myAltRowClass',
rownumbers: true,
gridview: true,
rowNum: 50,
rowList: [50, 100, 250],
height: 'auto',
caption: "Test Queue",
scrollOffset: 2,
viewrecords: true,
sortorder: 'desc',
}
到
pager: '#pager1',
altRows: true,
altclass: 'myAltRowClass',
rownumbers: true,
gridview: true,
//rowNum: 50,
//rowList: [50, 100, 250],
//height: 'auto',
width: 450,
height: 404,
caption: "Test Queue",
//scrollOffset: 2,
viewrecords: true
//sortorder: 'desc',
}
更改后,可以删除patchUpJQGrid_FitInParentDiv
的来电,因为不再需要。
我想强调的是,对于旧的jqGrid版本,严格推荐上述更改。免费的jqGrid需要进行更改。