背景
我在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;?
的值设置属性答案 0 :(得分:2)
我想我找到了解决问题的简单方法。
问题出现是因为jqGrid
尝试从cellatr返回的字符串中提取样式属性。它以这种方式工作,以便将返回的样式附加到现有的单元格样式。 jqGrid搜索第一次出现的&#39; style&#39;。
所以我的解决方法是在返回的字符串前加上空样式属性:
return ' style="" customAttr: "' + attrValue + '"'
答案 1 :(得分:0)
对于仍然遇到此问题的任何人,据报道此错误已在jqGrid 4.7.0中修复,因此升级jqGrid可以解决您的问题。