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をより適切に書き直す必要があることがわかりました。次回は、RegExマッチングを使用してコードを変更するというtrirandの提案に投稿したいと思いました。

cellattrそれにもかかわらず、現在の実装で使用できるようにすることができるいくつかの簡単なルールがあります。

  • から返される文字列の最後のstyle属性として属性を使用する必要がありますcellattr
  • ' '属性の値だけでなく返す場合は、戻り値の最初の文字として追加のブランクを含める必要がありstyleます。
  • 単語は使用しないでくださいstyletitle対応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"';
    }
}

デモは、変更が機能することを示しています。

于 2012-06-08T21:39:44.497 に答える