Javascript 如何重用jqGrid选项

Javascript 如何重用jqGrid选项,javascript,jquery,jqgrid,Javascript,Jquery,Jqgrid,我已经看过几篇关于这个问题的帖子。但没有得到我想要的实际答案 我知道我可以为应用程序中的所有jqGrids设置全局设置。那么我不需要在新创建的jqGrids中提到这些选项 但我想设置一些特定于模块的选项设置。假设我想将jqGrid用于我的销售模块。我还为所有jqGrids设置了一些选项作为全局选项。现在对于sales模块,我希望每个sales jqGrid共享一些公共选项。但任何销售网格都可以覆盖公共选项中的一个或两个选项。如何做到这一点。如果您能够使用PHP或类似的服务器端语言,这很容易实现:

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

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


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

如果您能够使用
PHP
或类似的服务器端语言,这很容易实现:

$("#my_grid").jqGrid({
    <?php
        include "global_jqGrid_options.js";
        include "sales_jqGrid_options.js";
    ?>
});


第二个include文件中的选项应该覆盖第一个文件中的并发选项(但我还没有对此进行测试)。

这很容易做到。您应该理解创建jqGrid的代码如下

$("#gridid").jqGrid(objectWithGridOptions);
// 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
});
其中一种主要使用匿名内联对象初始化,如

$("#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
});
然后,可以使用公共选项定义对象,并使用将其扩展到栅格的特定对象。这样,您甚至可以覆盖一些常用选项。因此,如果在轴网1和轴网2中使用某些选项,但在轴网3中不使用,则仍可以在公共对象中包含最常用的选项,并在创建轴网3时仅包含新值

代码可能看起来像

$("#gridid").jqGrid(objectWithGridOptions);
// 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
});

好。但我不能将它们保存在js文件中并从那里使用吗?@Jimcarry不确定我是否理解。但是为什么要将全局选项保存在与jqGrid相同的js文件中呢?或者你真的想要一个js文件来处理所有的事情吗?你总是一个救生员。可能是:maybe的副本。但这里奥列格解释得更清楚了。