JQGrid真正的滚动问题

时间:2012-06-19 16:59:48

标签: jquery jqgrid

我的JqGrid代码如下所示

$('#grid').jqGrid({
    url: '',
    scroll: 1,
    postData: {
        ...
    },
    datatype: "json",
    mtype: 'POST',
    colNames: [....],
    colModel: [{
        name: 'source',
        index: 'source',
        width: '100',
        align: 'center',
        stype: 'select',
        searchoptions: {
            dataUrl: 'getSource'
            }
    }, { ...
    }],
    rowNum: 200,
    height: '450px',
    autowidth: false,
    shrinkToFit: true,
    rownumbers: true,
    pager: '#table-page',
    sortname: '...',
    viewrecords: true,
    sortorder: 'asc',
    caption: "Records",
    emptyrecords: "Empty records",
    loadonce: false,
    loadComplete: function() {
       ....
    },
    jsonReader: {
       ....
    }
});

当我慢慢滚动网格并达到200时,网格重新加载,但视图显示2000年的视图1-400。

如果我继续慢慢滚动,那么我会看到2000年的1-600页。

我们还可以在演示http://www.trirand.com/blog/jqgrid/jqgrid.html中看到 - > 3.7的全新内容 - >真实滚动并看到相同的错误。

有人可以建议我一个解决方法。

3 个答案:

答案 0 :(得分:1)

它按设计工作...如果你慢慢滚动它会向表中添加记录 - 所以你可以向上滚动并且数据仍然存在 - 如果你快速滚动,当前数据被删除,只有新数据被添加使用在与滚动位置匹配的起始点指定的行数

答案 1 :(得分:1)

如果需要,您可以使用viewrecords选项关闭号码:

viewrecords: false

jqGrid documentation有更多详情:

  

如果为true,则jqGrid会在查询中的记录总数中显示网格中的开始和结束记录编号。此信息以此格式显示在寻呼机栏中(默认情况下右下方):“从Z中查看X到Y”。如果此值为true,则可以调整其他参数,包括emptyrecords和recordtext。

答案 2 :(得分:0)

这是我的代码:删除旧数据但保持滚动位置:

beforeProcessing: function(data, status, xhr){
    // Prevent from loading duplicate data
    var firstId = data.rows[0].id;
    if (-1 != $("#"+firstId ).index()){
        return false;
    }

    // Keep scroll position
    $.scrolltop = $(this).closest(".ui-jqgrid-bdiv").scrollTop();

    // Clear old data -> This will make scroll position to zero
    $(this).jqGrid('clearGridData', true);

    // Show white Div portion
    $(this).parent().children('div').eq(0).show();
},
loadComplete: function (data) {
    // Set height of white Div portion
    $(this).parent().children('div').eq(0).height($.scrolltop);

    // Re-set scroll position
    $(this).closest(".ui-jqgrid-bdiv").scrollTop($.scrolltop);
}