如何重用jqGrid选项

时间:2015-05-21 09:13:05

标签: javascript jquery jqgrid

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

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

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

2 个答案:

答案 0 :(得分:2)

这很容易做到。您应该了解创建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中没有使用,则仍可以在公共对象中包含最常用的选项,并在创建网格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
});

答案 1 :(得分:1)

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

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


您的选项文件如下所示:

height: 575,        
autowidth: true,
shrinkToFit: true


第二个包含文件中的选项应该覆盖第一个包含的同意选项(但我没有对此进行测试)。