Jquery jqGrid:cellattr返回包含“的字符串时出错”;“风格”;

Jquery jqGrid:cellattr返回包含“的字符串时出错”;“风格”;,jquery,html,jquery-ui,jqgrid,Jquery,Html,Jquery Ui,Jqgrid,背景: <table id="grid"></table> 我在jqGrid中遇到了奇怪的行为:当cellattr回调返回包含“style”的字符串时,网格会变得混乱 请参见一个示例: <table id="grid"></table> HTML: <table id="grid"></table> 另外请看 在上面的示例中,cellattr为第一行返回“customAttr=”GangnamAttribute“,为第

背景:

<table id="grid"></table>
我在
jqGrid
中遇到了奇怪的行为:当
cellattr
回调返回包含“style”的字符串时,网格会变得混乱

请参见一个示例:

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

<table id="grid"></table>
另外请看

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

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

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

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

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

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

因此,我的解决方法是在返回的字符串前面加上空样式属性:

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

请参见

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

必须修复jqGrid的代码(请参见代码部分),才能使用名称或值包括
样式
标题
子字符串的属性。我个人更愿意允许
cellatr
返回对象,而不仅仅是字符串。例如
{customAttr:“GangnamAttribute”}
@Oleg Nice!我不知道cellattr可以返回object而不是string。我会尽力让你知道这是否有用。谢谢你误解了我。我的意思是必须修复
cellattr
的代码,但我不是说jqGrid的当前代码允许从
cellattr
返回对象。我建议您不要修改通过
cellattr
返回的字符串的解析(请参阅代码
formatCol
)。可以使用
if(typeof-celp==“string”){/*现有代码*/}来代替它,否则如果(celp!=null&&typeof-celp==“object”){/*新代码*/}
。“可能会对您有所帮助。”奥列格,谢谢您的澄清。我想我找到了解决问题的简单方法。jqGrid尝试从cellatr样式属性返回的字符串中提取,以便将返回的样式附加到现有的单元格样式中。jqGrid搜索“style”的第一个匹配项。因此,我的工作是在返回的字符串前面加上空的style属性:return'style=”“customAttr:“+attrValue+””刚刚有一个关于这个问题的实时bug,在我找到这个问题之前,我一直很震惊。感谢您找到这个问题。弄清楚是什么触发了破损让我发疯。jqGrid开发人员至少没有从他们的小解析逻辑中排除引号内的关键字,这真是太愚蠢了。