在jqgrid中停止可调整大小的列

时间:2011-05-18 11:38:40

标签: jqgrid

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

2 个答案:

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