我看过几个关于这个问题的帖子。但是没有得到我想要的实际答案。
我知道我可以为应用程序中的所有jqGrids设置全局设置。然后我不需要在新创建的jqGrids中提及这些选项。
但我想设置一些特定于模块的选项设置。假设我想将jqGrid用于我的销售模块。我还为所有jqGrids设置了一些选项作为全局选项。现在对于销售模块,我希望每个销售jqGrid将共享一些常见选项。但是任何销售网格都可以覆盖普通选项中的一个或两个选项。我怎么能这样做。
答案 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
第二个包含文件中的选项应该覆盖第一个包含的同意选项(但我没有对此进行测试)。