【问题标题】:Maintaining scroll state in jqgrid在 jqgrid 中保持滚动状态
【发布时间】:2015-11-06 11:43:25
【问题描述】:

如何在每次刷新jqgrid 时保持滚动状态?我尝试了以下方法:

var scrollPosition = $("#"+grid_id).closest('.ui-jqgrid-bdiv').scrollTop();
$("#"+grid_id).trigger("reloadGrid", [{current:true}]);
$("#"+grid_id).closest('.ui-jqgrid-bdiv').scrollTop(scrollPosition);

但它不起作用,并且在网格刷新后滚动条会回到顶部。

此外,$("#"+grid_id).closest('.ui-jqgrid-bdiv').scrollTop(); 每次都会输出 0,尽管网格有一个滚动条。选择器参数 ($("#"+grid_id)) 是否不正确?里面应该有什么?

【问题讨论】:

    标签: javascript jquery jqgrid


    【解决方案1】:

    我想你尝试设置scrollTop 之前数据加载到网格中。我建议您将scrollTop 保存到网格的自定义选项中,并在loadComplete 回调或jqGridAfterLoadComplete 事件中重置位置。

    要保存滚动顶部位置,您可以使用

    var $grid = $("#"+grid_id),
        p = $grid.jqGrid("getGridParam");
    p.scrollTopPosition = $grid.closest(".ui-jqgrid-bdiv").scrollTop();
    

    要恢复你可以使用的位置

    $("#"+grid_id).bind("jqGridAfterLoadComplete", function () {
        var $self = $(this), p = $self.jqGrid("getGridParam");
    
        if (p.scrollTopPosition !== undefined) {
            $self.closest(".ui-jqgrid-bdiv").scrollTop(p.scrollTopPosition);
            p.scrollTopPosition = undefined;
        }
    });
    

    【讨论】:

    • 我不知道为什么,但是jqGridAfterLoadComplete 的函数没有被调用。但是网格令人耳目一新。
    • 请在您的每个问题中包括:您使用什么版本的 jqGrid 以及您使用的 jqGrid 哪个分支(免费的 jqGrid、Guriddo jqGrid JS 或版本中的一些旧 jqGrid loadComplete 而不是 jqGridAfterLoadComplete
    • @SuhailGupta:问题解决了还是还有一些问题?如果存在问题,请提供可用于重现问题的demo。
    • 它仍然存在,因为 loadComplete 没有被调用。这是 sn-p 快照:i.stack.imgur.com/VVdOE.png。不过,gridComplete 正在被调用。代码有问题吗?
    • @SuhailGupta:不客气!我希望你知道free jqGrid - 我开发的 jqGrid 的分支。 many wiki articles 和自述文件中描述了这些功能。关于idPrefix的使用:在你的场景中确实是严格要求的。
    猜你喜欢
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-03
    • 2020-04-07
    • 1970-01-01
    • 2012-03-09
    相关资源
    最近更新 更多