Остановка изменяемого размера столбцов в 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']} };