Как повторно использовать параметры jqGrid


Я видел несколько сообщений, касающихся этого вопроса. Но не получить тот ответ, который мне нужен.

Я знаю, что могу установить глобальную настройку для всех моих jqGrid в приложении. Тогда мне не нужно упоминать эти опции в недавно созданных jqGrids.

Но я хочу установить некоторые настройки параметров модуля. Предположим, я хочу использовать jqGrid для моего модуля продаж. Я также установил некоторую опцию в качестве глобальной опции для всех моих jqGrid. Теперь для модуля продаж я хочу, чтобы каждый продаж jqGrid поделится некоторыми общими опциями. Но любая сетка продаж может переопределить один или два варианта из общего варианта. Как я могу это сделать?

2 2

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
});

Затем вы можете определить объект с общими опциями и расширить его с помощью $.расширьте до конкретного объекта для сетки. Таким образом, вы даже можете переписать некоторые общие параметры. Так что если вы используете некоторые опции в сетке 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
});

Если вы можете использовать PHP или аналогичный язык на стороне сервера, это легко сделать:

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


ваши файлы опций выглядят следующим образом, например:

height: 575,        
autowidth: true,
shrinkToFit: true


параметры из второго включаемого файла должны переопределять совпадающие параметры из первого (но я не проверял это).