Остановка изменяемого размера столбцов в jqgrid

Как я могу сделать все столбцы jqgrid не изменяемого размера? В настоящее время я думаю, что в каждом столбце нужно указать свойство { resizable:false }. Есть ли в любом случае я могу указать для всей сетки?

2 ответа

Решение

Начиная с версии 3.8.2 jqGrid поддерживает одну очень полезную функцию: шаблоны столбцов. (Возможно, я не совсем правильно хвалить эту функцию, потому что эта функция была введена по моему собственному предложению:-)). Эта функция до сих пор не документирована, но ее очень легко использовать.

Я объясняю это на примере. Если вы определите дополнительный параметр jqGrid

cmTemplate:{resizable:false}

тогда ваша проблема будет решена.

Если у вас есть больше свойств, которые являются общими для всех столбцов colModel предметы, например align:'center' cmTemplate Вам также поможет (cmTemplate:{resizable:false, align:'center'}). В jqGrid 3.8.2 была небольшая ошибка в приоритете настроек шаблона относительно настроек из colModel, но ошибка исправлена ​​в jqGrid 4.0.0. Так что свойства из cmTemplate можно интерпретировать так же, как значения по умолчанию для colModel предметы.

Еще одна версия использования шаблона столбца jqGrid имеет вид:

var myDateTemplate = {sorttype:'date', formatter:'date',
                      formatoptions: {newformat:'m/d/Y'}, datefmt: 'm/d/Y',
                      align:'center', width:80 }
$("list").jqGrid({
    colModel: [
        ...
        {name:'column1': template:myDateTemplate},
        {name:'column2': template:myDateTemplate, width:90},
        ...
    ]
    ...
});

Как вы можете определить некоторые шаблоны (например, myDateTemplate) и использовать там во многих местах в вашей сетке (или gids). С учетом этой функции вы можете сделать свой код короче, лучше читаемым и легко изменяемым.

Шаблон отлично работает для меня:

 { name: 'quantity_warehouse', index: 'quantity_warehouse', template: intColTemplate, width: '70' },

 { name: 'status', index: 'status', align: 'left', template: stringColTemplate, width: '90' },

 { name: 'snapshot_at', index: 'snapshot_at', template: dateColTemplate },

 { name: 'applied_at', index: 'applied_at', template: dateColTemplate },

JS:

var dateColTemplate = { align: 'left', search: true, stype: 'text', width: '70', datefmt: 'm/d/y', formatter: 'date', formatoptions: { srcformat: 'm/d/y', newformat: 'm/d/Y' }, sorttype: 'date', searchrules: { required: true, date: true }, searchoptions: { sopt: ['eq', 'ge', 'le'],

    dataInit: function (el) {
        $(el).datepicker({ changeYear: true, changeMonth: true, showButtonPanel: true });
    }
}
};
var intColTemplate = { align: 'left', search: true, stype: 'text', searchoptions: { sopt: ['eq', 'ge', 'le']} };
var stringColTemplate = { align: 'left', search: true, stype: 'text', searchoptions: { sopt: ['bw', 'cn']} };
Другие вопросы по тегам