jqGrid - расширение для согласованности - PullRequest
2 голосов
/ 18 сентября 2011

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

{ name: 'ABC', width: 80, align: 'center', stype: "select", 
              searchoptions: { value: "1:Compliant;0:Not Compliant"} }

Я хотел бы иметь такой:

{ name: 'ABC', width: 80, mytype: compliancestatus }

, гдеatipsstatus - это функция, которую я написал бы.

Возможна ли такая вещь - без изменения исходного кода jqGrid? Если да, может ли кто-нибудь указать мне пример такого расширения?

1 Ответ

5 голосов
/ 18 сентября 2011

Поскольку jqGrid 3.8.2 поддерживает шаблоны столбцов.

Вы можете просто определить, например,

var compliancestatus = {
        width: 80,
        align: 'center',
        stype: "select", 
        searchoptions: { value: "1:Compliant;0:Not Compliant" }
    };

где-то в области видимости, а затем просто используйте в colModel

{ name: 'ABC', template: compliancestatus }

В шаблоне вы можете включить любые параметры. Если определение столбца имеет то же свойство, но с таким же значением, как

{ name: 'ABC', width: 100, template: compliancestatus }

будет использоваться значение из colModel (width: 100 в случае).

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

mySettings.templateCheckbox = {
    formatter: 'checkbox', align: 'center', width: 20,
    edittype: 'checkbox', editoptions: { value: "1:0" },
    stype: "select", searchoptions: { sopt: ['eq', 'ne'], value: ":Any;1:Yes;0:No" }
};

Таким же образом я определил много других шаблонов, которые уменьшают код сетки и улучшают управление общим стилем сетки.

Если вы хотите изменить некоторые общие настройки по умолчанию для всех столбцов, вы можете использовать cmTemplate параметр jqGrid. Например

cmTemplate: { align: 'center' }

Вы можете использовать его как дополнительный параметр jqGrid или установить его как любой другой параметр по умолчанию с учетом

$.extend($.jgrid.defaults, {
    cmTemplate: { align: 'center' }
});

Подробнее о шаблонах столбцов здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...