【问题标题】:jqGrid - extending for consistencyjqGrid - 为一致性而扩展
【发布时间】:2011-09-17 21:42:09
【问题描述】:

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

【问题讨论】:

    标签: jqgrid


    【解决方案1】:

    从 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

    【讨论】:

    • 完美。我完全错过了。谢谢。
    • @RonR:不客气!如果您的问题得到解决,您可以将答案标记为"accepted"
    • 我忘记了一些事情:在 colmodel { name: 'ABC', template: compliancestatus } 中,我还想强制列标题对齐的一致性。我认为我必须为标题做的是将其添加到链中:.jqGrid("setLabel", "ABC", "", { "text-align": "center" }) 但即使我在 css 类中定义对齐并执行此操作:.jqGrid("setLabel", "ABC", "", "compliancestatusClass") 这仍然需要我在两个地方正确设置对齐.理想情况下,有一个未记录的 jqGrid 选项 alignheadingswithdata:true`
    • @RonR:没有属性可以定义列标题的对齐方式。关于setLabel(参见the answer),可以设置对齐方式。如果您愿意,您可以枚举colModel 并根据列的对齐方式设置所有列标题的对齐方式。
    • 谢谢。这看起来很容易。
    猜你喜欢
    • 2012-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多