【问题标题】:Calling a function with parameter on click of a jqgrid cell单击jqgrid单元格时调用带有参数的函数
【发布时间】:2012-06-08 19:18:04
【问题描述】:

如果满足特定条件,我正在尝试使单元格着色且可点击。 我遇到的问题是将参数传递给元素的 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>

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

【问题讨论】:

    标签: jquery jqgrid


    【解决方案1】:

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

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

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

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

    The demo 表明更改有效。

    【讨论】:

    • 非常感谢。这完全符合我的要求。我会处理您给出的这些指示。
    • 实际上这很好,但是当一个包含类似“styletest.com”的字符串在函数属性中传递时,点击函数会因为字符串包含样式词而中断该行。任何帮助?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多