jqGrid:当cellattr返回包含“style”的字符串时弄乱

时间:2014-05-08 13:31:33

标签: jquery html jquery-ui jqgrid

背景

我在jqGrid遇到了奇怪的行为:当cellattr回调返回包含" style"的字符串时网格搞乱了。

请参阅示例:

HTML:

<table id="grid"></table>

的Javascript

$("#grid").jqGrid({
    datatype: "local",
    height: "auto",
    data: [{column1: "row1col1", column2: "row1col2" },
        {column1: "row2col2", column2: "row2col2" }],
    colNames: ['Column1', 'Column2'],
    colModel: [
    {
        name: 'column1',
        index: 'column1',
        cellattr: function (rowId, val, rawObject, cm, rdata) {
            attrValue = (rawObject.column2 == 'row2col2') ? 'GangnamStyleAttribute' : 'GangnamAttribute';
            return ' customAttr="' + attrValue + '"';
        },
        width: 100
    },
    {
        name: 'column2',
        index: 'column2',
        width: 100
    }],
    caption: "Stack Overflow Example",
});

$("#grid").jqGrid('setGridParam');

另请参阅jsfiddle

在上面的示例中,cellattr返回&#39; customAttr =&#34; GangnamAttribute&#34;&#39; 第一行和&#39; customAttr =&#34; GangnamStyleAttribute&#34;&#39; 为第二行。

jsfiddle可以看到,第一行显示正确,但第二行搞砸了:第一列未显示,第二列显示而不是第一列。

如果cellattr返回包含子字符串&#34; 样式&#34;在它。

问题: 是否有任何解决方案或解决此问题,允许使用包含单词&#34; 样式&#34;?

的值设置属性

2 个答案:

答案 0 :(得分:2)

我想我找到了解决问题的简单方法。

问题出现是因为jqGrid尝试从cellatr返回的字符串中提取样式属性。它以这种方式工作,以便将返回的样式附加到现有的单元格样式。 jqGrid搜索第一次出现的&#39; style&#39;。

所以我的解决方法是在返回的字符串前加上空样式属性:

return ' style="" customAttr: "' + attrValue + '"'

请参阅jsfiddle with the workaround

答案 1 :(得分:0)

对于仍然遇到此问题的任何人,据报道此错误已在jqGrid 4.7.0中修复,因此升级jqGrid可以解决您的问题。