如果单元格满足某些条件,我正在尝试使单元格着色和可点击。我遇到的问题是将参数传递给元素的点击。我正在做这样的事情:
{
name: 'numberOfUnits',
index: 'numberOfUnits',
sorttype: 'integer',
cellattr: function (rowId, tv, rawObject, cm, rdata) {
if (...) {
return 'style="background-color:red" onClick="javascript:showReceivedLockedPieChartDialog(' + ''' + lockedCellId + ''' + ')"';
}
else {
return 'style="color:black"';
}
}
}
我看到文本的形成是:
style="background-color:red" onClick="javascript:showReceivedLockedPieChartDialog('ABC')"
我看到它正在创建这样的东西...
<td aria-describedby="reportGrid_numberOfUnits" title="13" ABC")"="" onclick="javascript:showReceivedLockedPieChartDialog(" style="background-color:red" role="gridcell">13</td>
请帮我把参数传递给这个函数。
是的!您的代码表明,从 cellattr
返回的字符串的分离将被分析得不够仔细。我发现应该更好地重写将在内部使用的函数格式Col。我想下次发布到 trirand 建议使用RegEx
匹配更改代码。
尽管如此,有一些简单的规则可以允许在当前实现中使用cellattr
:
- 应使用
style
属性作为从cellattr
返回的字符串中的最后一个属性 - 如果不仅返回
style
属性的值,则应将附加' '
空白作为返回值的第一个字符。 - 不应仅使用单词
style
、title
和class
作为相应属性的名称。
最后一条规则意味着您不应该使用 class="mytitle"
或 title="my class style"
.返回字符串的解析不是那么小心。所以这样的名字会有一些副作用。正如我之前所写的,在我看来,解析结果的代码jqGrid的相应部分应该改变。下次我会尝试将相应的建议发布到trirand。
在您的情况下,您应该将cellattr
代码重写为
cellattr: function (rowId, tv, rawObject, cm, rdata) {
if (...) {
return ' onclick="showReceivedLockedPieChartDialog(' + ''' +
lockedCellId + ''' + ')" style="background-color:red"';
} else {
return 'style="color:black"';
}
}
演示显示更改有效。