jqGrid - 扩展以保持一致性

时间:2011-09-17 21:42:10

标签: jqgrid

我想将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源代码?如果是这样,有人能指出我这种类型的扩展的例子吗?

1 个答案:

答案 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