javascript - 如何重用 jqGrid 选项

标签 javascript jquery jqgrid

我看过几篇关于这个问题的帖子。但没有得到我想要的实际答案。

我知道我可以为应用程序中的所有 jqGrid 设置全局设置。那么我就不需要在新创建的 jqGrids 中提及这些选项了。

但我想设置一些模块特定的选项设置。假设我想将 jqGrid 用于我的销售模块。我还为我的所有 jqGrid 设置了一些选项作为全局选项。现在对于销售模块,我希望每个销售 jqGrid 都共享一些通用选项。但任何销售网格都可以覆盖通用选项中的一两个选项。我怎样才能做到这一点。

最佳答案

这真的很容易做到。你应该明白创建 jqGrid 的代码看起来像

$("#gridid").jqGrid(objectWithGridOptions);

其中一个主要使用匿名内联对象初始化,例如

$("#gridid").jqGrid({
    // ... some options
});

但它没有做更多的事情

var objectWithGridOptions = {
    // ... some options
};
$("#gridid").jqGrid(objectWithGridOptions);

所以如果你想创建多个网格

$("#gridid1").jqGrid({
    // ... some common options
    // ... some options specific for grid 1
});
$("#gridid2").jqGrid({
    // ... some common options
    // ... some options specific for grid 2
});
$("#gridid3").jqGrid({
    // ... some common options
    // ... some options specific for grid 3
});

然后您可以使用通用选项定义对象并使用 $.extend 扩展它到网格的特定对象。您甚至可以覆盖一些常用选项。因此,如果您在网格 1 和网格 2 中使用某些选项,但不在网格 3 中使用,您仍然可以在公共(public)对象中包含最常见的选项,并且只需在创建网格 3 期间包含新值即可。

代码看起来像

// the part can be in separate js file which you includes
// on all pages of your project
var commonModuleOption = {
        // ... some common options
    };

$("#gridid1").jqGrid($.extend(true, {}, commonModuleOption, {
    // ... some options specific for grid 1
});
$("#gridid2").jqGrid($.extend(true, {}, commonModuleOption, {
    // ... some options specific for grid 2
});
$("#gridid3").jqGrid($.extend(true, {}, commonModuleOption, {
    // ... some options specific for grid 3
});

关于javascript - 如何重用 jqGrid 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30369389/

相关文章:

jqgrid - jqGrid 有行交换功能吗?

php - 如何记录 JavaScript 操作?

javascript - 如何根据图书 ID 对用户进行排序?

javascript - 如何通过ajax将数据数组发送到后端(php)

javascript - 将 JQuery 插件添加到 typescript

jquery - CSS3 在动画元素上旋转导致点击事件不调用

JavaScript - 如何转义 var 中的引号以通过 Json 传递数据

javascript - javascript中如何将变量从一个函数传递到另一个函数

php - Jqgrid + 代码点火器

javascript - jqGrid:根据列名称的行单元格值更改行的背景颜色