jqgrid自定义数字分页

时间:2014-09-22 11:10:12

标签: jquery jquery-ui jqgrid

如何更改jqgrid分页 喜欢: 第1页,共15页(150件商品)<< < 1 2 3 4 5 .. 12 13 15> >>

两者都显示在中心td。

1 个答案:

答案 0 :(得分:0)

查看提供相应演示的the answer。通常,您可以使用任何其他自定义方式创建寻呼机。你出租车。将1 2 3 4 5 ... 12 13 15链接放在链接上并绑定点击事件处理程序非常重要。在事件处理程序内部,您只需在网格上触发reloadGrid事件,并使用相应的page参数:$("#gridid").trigger("reloadGrid", [{page: newPage}]);。另请参阅the answer

更新The answer已有3.5年历史。演示使用jqGrid 3.8.2版本。从版本4.3.2(当前为4.6)开始,jqGrid支持jQuery事件。它允许轻松注册更多作为一个事件处理程序。像loadCompleteonSelectRow这样的经典回调的缺点:“只能有一个”。例如,您无法使用寻呼机初始化定义一个通用回调loadComplete,并使用特定<另一个附加回调loadComplete / em>其他行动。您可以按

定义公共loadComplete
$.extend(true, $.jgrid.defaults, {
    loadComplete: function (data) {
        ...
    }
});

但如果在网格中定义loadComplete,它将被覆盖。另一方面,可以注册多个 jqGridLoadComplete或jqGridAfterLoadComplete事件处理程序,并且将调用所有事件处理程序。 jQuery 追加事件处理程序列表,而不是覆盖它。

因此,要在包含许多网格的复杂项目中实现新功能(如新寻呼机),我建议您使用两个代码段。

第一个需要修改代码。看看the demo。网格选项不包含任何loadComplete回调,但包含行

$grid.on("jqGridAfterLoadComplete", refreshPager);
创建网格$grid之前

refreshPager的代码是旧版演示中loadComplete回调的修改副本。以这种方式可以注册多个 "jqGridAfterLoadComplete"事件处理程序。

您可以通过添加行

来修改代码
myjqGridInit($grid);

在每个网格创建之前,将myjqGridInit函数的代码放在.js之后包含的单独jquery.jqGrid.min.js文件中。在这种方式中,您可以将jqGrid的所有常见项目初始化(如注册$grid.on("jqGridAfterLoadComplete", refreshPager);)放在项目的一个位置。维护这样的项目很容易。

如果到目前为止你还没有使用onInitGrid回调,我可以建议你使用jqGrid对现有页面进行微小更改的第二种选择。如果您在项目中使用母版页,则可能需要在 jquery.jqGrid.min.js之后和创建任何网格之前包含以下代码

$.extend(true, $.jgrid.defaults, {
    onInitGrid: function () {
        refreshPager.call(this);
    }
});

上面的代码定义了默认的onInitGrid回调,它使所有项目初始化。您可以将refreshPager的代码放在单独的.js文件中,并将其包含在母版页中。

The demo演示了该代码段。这样您就可以在现有项目的所有 jqGrids中实现新功能,而只需对代码进行最少的修改。唯一的限制是:您不应在网格中使用onInitGrid回调,因为它会覆盖常见的初始化。