我想将jqGrid用于很多只有一小组特定于应用程序的列类型的网格,并且我想创建一种强制一致性的方法.例如,我希望显示行的合规性状态的所有列具有特定格式,以特定方式对齐,具有特定搜索选项等.因此,不要像这样使用colmodel条目:
{ name: 'ABC', width: 80, align: 'center', stype: "select",
searchoptions: { value: "1:Compliant;0:Not Compliant"} }
Run Code Online (Sandbox Code Playgroud)
我想要一个这样的:
{ name: 'ABC', width: 80, mytype: compliancestatus }
Run Code Online (Sandbox Code Playgroud)
compliancestatus是我要写的函数.
这种事情是否可行 - 没有修改jqGrid源代码?如果是这样,有人能指出我这种类型的扩展的例子吗?
由于jqGrid 3.8.2是支持的列模板.
你可以定义一下例子
var compliancestatus = {
width: 80,
align: 'center',
stype: "select",
searchoptions: { value: "1:Compliant;0:Not Compliant" }
};
Run Code Online (Sandbox Code Playgroud)
在可见范围内的某个地方,然后只使用 colModel
{ name: 'ABC', template: compliancestatus }
Run Code Online (Sandbox Code Playgroud)
在模板中,您可以包含任何参数.如果列定义具有相同的属性但具有相同的值,如
{ name: 'ABC', width: 100, template: compliancestatus }
Run Code Online (Sandbox Code Playgroud)
将使用colModel(width: 100在案例中)的值.
我之前提出了这个功能,我自己也在密集使用它.例如,我有许多网格,其中有许多带复选框的列.我在案例中使用以下模板:
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" }
};
Run Code Online (Sandbox Code Playgroud)
以同样的方式,我定义了许多其他模板,这些模板减少了网格代码并改进了公共网格样式的管理.
如果要更改所有列的一些常见默认设置,可以使用cmTemplatejqGrid的参数.例如
cmTemplate: { align: 'center' }
Run Code Online (Sandbox Code Playgroud)
您可以将它用作jqGrid的附加参数,或者将其设置为与其他任何默认参数一样
$.extend($.jgrid.defaults, {
cmTemplate: { align: 'center' }
});
Run Code Online (Sandbox Code Playgroud)
在此处阅读有关列模板的更多信息.