1

如果满足某些条件,我正在尝试使单元格着色且可单击。我遇到的问题是将参数传递给元素的 onclick。我正在做类似的事情:

{
    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>

请帮我将参数传递给这个函数。

4

1 回答 1

3

哦好!您的代码显示,从返回的字符串的分割cellattr将被解析得不够仔细。我发现最好重写将在内部使用的函数formatCol 。我想在下次发布 trirand 建议以使用RegEx匹配更改代码。

尽管如此,还是有一些简单的规则可以允许cellattr在当前实现中使用:

  • 您应该使用style属性作为返回的字符串中的最后一个属性cellattr
  • 如果您不仅返回属性' '的值,则应包含额外的空白作为返回值的第一个字符。style
  • 你不应该使用 words styletitleclass只能作为相应属性的名称。

最后一条规则意味着您不应该使用class="mytitle"or 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"';
    }
}

演示显示更改有效。

于 2012-06-08T21:39:44.497 回答