停止列在jqgrid中可resize

如何让jqgrid的所有列不能resize? 目前我认为每一列我都要指定属性{resizable:false}。 无论如何,我可以指定整个网格吗?

从版本3.8.2开始,jqGrid支持一个非常有用的function: 列模板 。 (从我的angular度来说,赞美这个function可能不太正确,因为这个function是在我自己的build议中引入的:-))。 该function还没有真正logging,但它可以很容易地使用。

我以一个例子来解释它。 如果你定义了额外的jqGrid参数

cmTemplate:{resizable:false} 

那么你的问题将得到解决。

如果你在colModel项目的所有列中都有更多的属性,例如align:'center'cmTemplate也会帮助你(cmTemplate:{resizable:false,align:'center'})。 在jqGrid 3.8.2中,模板设置的优先级相对于colModel设置是一个小错误 ,但是bug在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 ),并在网格(或gid)的许多地方使用。 就function而言,您可以缩短代码,提高可读性并轻松更改。

模板很适合我:

  { 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']} };