jqGrid:cellattr 返回包​​含“style”的字符串时出现混乱

Den*_*ich 5 html jquery jquery-ui jqgrid

背景:

我遇到了奇怪的行为jqGrid:当cellattr回调返回包含“style”的字符串时,网格变得混乱。

请看一个例​​子:

HTML:

<table id="grid"></table>
Run Code Online (Sandbox Code Playgroud)

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');
Run Code Online (Sandbox Code Playgroud)

另请参阅jsfiddle

在上面的示例中,第一行cellattr返回“customAttr="GangnamAttribute"” ,第二行返回“customAttr="GangnamStyleAttribute"” 。

从jsfiddle中可以看到,第一行显示正确,但第二行显示混乱:第一列未显示,第二列显示在第一列的位置。

如果返回的内容中cellattr包含子字符串“ style ”,就会发生这种情况。

问题:是否有任何解决方案或解决此问题的方法,允许使用包含单词“ style ” 的值设置属性?

Den*_*ich 2

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

出现此问题的原因jqGrid是尝试从 cellatr 返回的字符串中提取样式属性。它以这种方式工作,以便将返回的样式附加到已经存在的单元格样式中。jqGrid 搜索第一次出现的“style”。

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

return ' style="" customAttr: "' + attrValue + '"'
Run Code Online (Sandbox Code Playgroud)

请参阅jsfiddle 的解决方法