我正在使用带有水平滚动条的jqGrid
,但是当我使用水平滚动条时,列标题不会与列一起移动。一旦我停止滚动,网格就会恢复正常。见附图:
这发生在FF(4.0.1)中,但不发生在IE8中。
以下是我使用的网格选项:
width:'800',
shrinkToFit:false,
height: 500,
pager: '#pagerDiv',
gridview: true,
rowNum: 50,
rowTotal: 500,
sortorder: 'desc',
cellEdit: true,
cellsubmit: 'remote',
cellurl: 'MyURL',
beforeSaveCell:
function (rowid, cellname, value, iRow, iCol) {
return parse(value);
},
viewrecords: true,
loadComplete: loadCompleteHandler,
ignoreCase: true
....
jQuery(function(){
jQuery("#listTable").jqGrid('filterToolbar',{
stringResult: true,
searchOnEnter: false });
});
我有jqGrid
版本3.8.2,jQuery
1.4.4(完整版)。
有什么方法可以解决这个问题吗?
答案 0 :(得分:1)
我想这不是jqGrid中的错误。您所描述的内容与不同Web浏览器中jQuery.scroll的实现方式不同。我会试着解释为什么我这么认为。
要了解问题的位置,您应该知道列标题不是同一HTML表的一部分。在创建时,构建列标题的<th>
元素实际上在<table>
中,但随后在另一个div中移动。所以人们总是如此命名为hDiv(标题div)和bDiv(body div)。有关详细信息,请参阅the answer。此外,表的DOM元素接收扩展器(附加属性)grid
,它保存不同的附加信息,如grid.hDiv
- hDiv(头部div)和grid.bDiv
的DOM元素 - DOM元素bDiv(body div)。
现在关于滚动。因为列标题位于另一个div中,所以滚动工作是异步的。要使<table>
元素的jqGrid寄存器jQuery.scroll事件处理程序同步(请参阅here)并在相应的事件处理程序scrollGrid内执行以下代码:
grid.hDiv.scrollLeft = grid.bDiv.scrollLeft;
(见here行)。因此,在桌面上的每个滚动事件中,滚动位置将被同步。
您描述的效果对我来说似乎只有在您放下滚动框后,FF(4.0.1)才会触发scroll
事件。