【问题标题】:How to show pager only if there is more than one page in free jqgrid仅当免费 jqgrid 中有多个页面时如何显示寻呼机
【发布时间】:2015-03-16 15:43:30
【问题描述】:

使用带有顶级工具栏的免费jqgrid:

    $.extend(true, $.jgrid.defaults, {
        mtype: 'POST',
        iconSet: "fontAwesome" ,
        navOptions: {
            position: "center"},
        autoResizing: { compact: true,widthOfVisiblePartOfSortIcon: 13 },
        toppager: true,
        viewrecords: false,
        rowList: [50, 500, 1000],
        rowNum: 50,
...

按钮和分页器位于工具栏的左侧,呈现为内联块元素。 在中心部分。 使用答案中的代码删除了顶级工具栏的左右部分 how to place pager to end of top of toolbar in free jqgrid

    $("#grid_toppager")
         .find(".ui-pg-button")
         .each(function (i) {
             $(this).attr({
                 tabindex: String(i),
                 role: "button"
             });
         });
    $("#grid_toppager_left").hide();
    $("#grid_toppager_right").hide();
    $("#grid_toppager_center").attr("colspan", "2");
    $("#grid_toppager_center").css({ width: "", "text-align": "left", "white-space": "" });
    $("#grid_toppager_center").find(">.navtable").append(
        $("#grid_toppager_center").find(">table.ui-pg-table")
    );
    $("#grid_toppager_center").find(">.navtable>table.ui-pg-table").css({display: "inline-block"});

    $grid.bind("jqGridAfterGridComplete", function () {
        var p = $(this).jqGrid("getGridParam"), $toppager = $(p.toppager);
        $toppager.find(".navtable").css("width", "");
    });

相同的代码用于编辑具有不同行数的表。 仅当页面超过一页(超过 50 行)时,如何在顶级工具栏中显示 jqgrid 寻呼机?

许多表只包含很少的行,显示寻呼机不是必需的。

如果添加了新行,分页器应该自动或交替出现,用户可以刷新页面以强制分页器出现。

更新

具有速度检索的远程分页数据用于根据 how to retrieve colmodel and data on single request and speed up jqgrid load

仅返回 pagesize+1 行。 JSON 结果在 ASP.NET MVC4 中创建,没有记录值:

            return new
            {
                total = rowList.Count() < rows ? page : page + 1,    
                page,
                rows = rowList
            };

p.reccount 和 p.records 始终具有相同的值,因此永远不会显示寻呼机。 在这种情况下如何有条件地显示寻呼机? 也许应该使用页面中的记录与页面大小进行比较?

【问题讨论】:

    标签: jquery html css jqgrid free-jqgrid


    【解决方案1】:

    如果我正确理解了你可以使用的问题

    loadComplete: function () {
        var p = $(this).jqGrid("getGridParam"),
            $topPagerButtons = $(p.toppager + "_center").find(">.navtable>table.ui-pg-table");
        $topPagerButtons[p.reccount < p.records ? "show" : "hide"]();
    }
    

    the demo。您可以在演示中选择在页面上显示 20 行或更多行,并且带有寻呼机的按钮将被隐藏。

    【讨论】:

    • 如果使用优化检索的远程分页数据,p.reccount 和 p.records 具有相同的值,并且永远不会显示寻呼机。在这种情况下如何启用/禁用寻呼机?我更新了问题。
    • @Andrus:如果你加载第二个页面,那么p.reccount应该是页面上显示的行数,p.records应该是总记录数我>。如果值相同,则您只有一页数据并且不需要显示寻呼机。这是你问的。不是吗?如果你想隐藏只隐藏分页元素的一部分,你可以这样做,但只选择你想隐藏/显示的元素。如果您返回服务器响应中的非标准信息,则必须更改测试标准对应于您返回的数据
    • 按照您对此问题更新部分中引用的问题的回答中的描述返回数据。这是标准方式。第一页的第一次请求返回 50 条记录,记录数也是 50 条记录。 alert() 框显示两个值都是 50。由于50&lt;50 条件为假,因此不会出现寻呼机。实际上表中有大量记录,所以应该出现寻呼机。
    • @Andrus:很明显,如果你想在客户端隐藏寻呼机如果返回的数据是full,你应该返回来自服务器的信息。如果您不填写records 部分并填写total 而不是您应该测试total 是否不等于page(可能意味着p.page &lt; p.lastpage)而不是p.reccount &lt; p.records
    • p.page &lt; p.lastpage 会在到达最后一页时使寻呼机消失。也许应该使用p.page&gt;1 || p.page &lt; p.lastpage
    猜你喜欢
    • 1970-01-01
    • 2013-04-24
    • 1970-01-01
    • 2012-03-02
    • 2014-12-30
    • 2014-02-14
    • 1970-01-01
    • 1970-01-01
    • 2015-08-16
    相关资源
    最近更新 更多