我想将jqGrid用于很多只有一小组特定于应用程序的列类型的网格,我想创建一种强制一致性的方法。例如,我希望显示行的合规性状态的所有列具有特定格式,以特定方式对齐,具有特定搜索选项等。因此,不要像这样使用colmodel条目:
{ name: 'ABC', width: 80, align: 'center', stype: "select",
searchoptions: { value: "1:Compliant;0:Not Compliant"} }
我想有一个这样的人:
{ name: 'ABC', width: 80, mytype: compliancestatus }
其中compliancestatus是我要写的函数。
这种事情是否可行 - 无需修改jqGrid源代码?如果是这样,有人能指出我这种类型的扩展的例子吗?
答案 0 :(得分:5)
由于jqGrid 3.8.2支持列模板。
您可以定义例如
var compliancestatus = {
width: 80,
align: 'center',
stype: "select",
searchoptions: { value: "1:Compliant;0:Not Compliant" }
};
在可见范围内的某个地方,然后在colModel
{ name: 'ABC', template: compliancestatus }
在模板中,您可以包含任何参数。如果列定义具有相同的属性,但具有相同的值,如
{ name: 'ABC', width: 100, template: compliancestatus }
将使用colModel
(案例中为width: 100
)的值。
我suggested这个功能在一段时间之前,我自己也在密切使用它。例如,我有许多网格,其中有许多带复选框的列。我在案例中使用以下模板:
mySettings.templateCheckbox = {
formatter: 'checkbox', align: 'center', width: 20,
edittype: 'checkbox', editoptions: { value: "1:0" },
stype: "select", searchoptions: { sopt: ['eq', 'ne'], value: ":Any;1:Yes;0:No" }
};
我以同样的方式定义了许多其他模板,这些模板减少了网格代码并改善了公共网格样式的管理。
如果要更改所有列的常用默认设置,可以使用jqGrid的cmTemplate
参数。例如
cmTemplate: { align: 'center' }
您可以将其用作附加parameter of jqGrid或将其设置为与
相关的任何其他默认参数$.extend($.jgrid.defaults, {
cmTemplate: { align: 'center' }
});
详细了解列模板here。