如何让jqgrid的所有列都不可调整大小?目前我认为每个列都要指定属性{resizable:false}。无论如何我可以指定整个网格吗?
答案 0 :(得分:14)
从版本3.8.2开始,jqGrid支持一个非常有用的功能:列模板。 (我赞扬这个功能可能不太正确,因为该功能是在my own suggestion上引入的:-))。该功能仍未真正记录,但可以非常轻松地使用。
我在一个例子中解释它。如果您定义其他jqGrid参数
cmTemplate:{resizable:false}
然后你的问题就会解决。
如果您拥有colModel
项所有列中常见的更多属性,例如align:'center'
cmTemplate
也可以帮助您(cmTemplate:{ resizable:false,align:'center'})。在jqGrid中,3.8.2相对于colModel
的设置,模板设置的优先级较小bug,但该错误在jqGrid 4.0.0中得到修复。因此,cmTemplate
的属性可以解释为{strong> 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)的许多位置使用。关于该功能,您可以使代码更短,更易读,更容易更改。
答案 1 :(得分:0)
模板对我很有用:
{ 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']} };