jqGrid-扩展以实现一致性

jqGrid-扩展以实现一致性,jqgrid,Jqgrid,我想将jqGrid用于很多只有一小部分特定于应用程序的列类型的网格,并且我想创建一种方法来强制实现一致性。例如,我希望显示行的符合性状态的所有列都具有特定格式、以特定方式对齐、具有特定的搜索选项等。因此,不要像这样使用colmodel条目: { name: 'ABC', width: 80, align: 'center', stype: "select", searchoptions: { value: "1:Compliant;0:Not Compliant"}

我想将jqGrid用于很多只有一小部分特定于应用程序的列类型的网格,并且我想创建一种方法来强制实现一致性。例如,我希望显示行的符合性状态的所有列都具有特定格式、以特定方式对齐、具有特定的搜索选项等。因此,不要像这样使用colmodel条目:

{ name: 'ABC', width: 80, align: 'center', stype: "select", 
              searchoptions: { value: "1:Compliant;0:Not Compliant"} }
{ name: 'ABC', width: 80, mytype: compliancestatus }
我想要一个这样的:

{ name: 'ABC', width: 80, align: 'center', stype: "select", 
              searchoptions: { value: "1:Compliant;0:Not Compliant"} }
{ name: 'ABC', width: 80, mytype: compliancestatus }
其中compliancestatus是我要编写的函数


不修改jqGrid源代码,这种事情可能发生吗?如果是这样,有人能给我举一个这种扩展类型的例子吗?

因为jqGrid 3.8.2是受支持的列模板

例如,您可以定义

var compliancestatus = {
        width: 80,
        align: 'center',
        stype: "select", 
        searchoptions: { value: "1:Compliant;0:Not Compliant" }
    };
cmTemplate: { align: 'center' }
在可视范围内的某个地方,然后仅在colModel中使用

在模板中,可以包含任何参数。如果列定义具有相同的属性但具有相同的值,如

{ name: 'ABC', width: 100, template: compliancestatus }
在这种情况下,将使用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" }
};
以同样的方式,我定义了许多其他模板,它们减少了网格的代码并改进了对通用网格样式的管理

如果要更改所有列的一些常见默认设置,可以使用jqGrid的cmTemplate参数。比如说

var compliancestatus = {
        width: 80,
        align: 'center',
        stype: "select", 
        searchoptions: { value: "1:Compliant;0:Not Compliant" }
    };
cmTemplate: { align: 'center' }
您可以将其用作附加参数,也可以将其设置为与的任何其他默认参数相同

$.extend($.jgrid.defaults, {
    cmTemplate: { align: 'center' }
});

阅读有关列模板的更多信息。

Perfect。我完全错过了。谢谢。@RonR:不客气!如果您的问题得到解决,您可以将答案标记为。我忘记了一些事情:在colmodel{name:'ABC',template:compliancestatus}中使用此选项,我还希望加强列标题对齐的一致性。我认为我必须为标题添加以下内容到链:.jqGridsetLabel,ABC,{text align:center}但即使我在css类中定义对齐方式并执行此操作:.jqGridsetLabel,ABC,compliancestatusClass,这仍然需要我在两个位置正确设置对齐方式。理想情况下,有一个未记录的jqGrid选项aligningheadingswithdata:true`@RonR:没有任何属性可以定义列标题的对齐方式。关于setLabel,请参见可以设置对齐方式。如果需要,可以枚举colModel并根据列的对齐方式设置所有列标题的对齐方式。谢谢。这看起来很容易。