1

jsp で dojox.grid.DataGrid を使用しています。

<script type="dojo/method" event="onStyleRow" args="inRow">
    var grid = dijit.byId("someID");
    var item = grid.getItem(inRow.index);
    if(item != undefined) {
        if(item.someAttribute == "1") {
            inRow.customClasses = "dojoxGridMYRow";
        } else {
            inRow.customClasses = "dojoxGridRow";
        }
    }     
    if(aBoolean) {
        inRow.customStyles = "backgrund-color: #FFCC00";
    }
    //dojox.grid.DataGrid.prototype.onStyleRow.apply(this, arguments);
    //grid.focus.styleRow(inRow);
    //grid.edit.styleRow(inRow);        
</script>

最初のコメント行は、行をクリックしたときに通常の動作を取得することです。しかし、 grid.update() が呼び出されるまで何も変更されません。これは良くないため、多くの行が再ロードされます。ちらつきのようなものです。奇妙なことに、マウスが変更された行の上に移動すると、背景色が変更されます(更新が呼び出されなかった場合)。したがって、更新なしで可能でなければなりません。updateRow または renderRow またはこのような方法で呼び出すと、無限ループが発生します。

誰でも私を助けることができますか?:/

編集: onStyleRow の動作もコピーしようとしましたが (選択した行が直接赤くマークされているため)、customClasses を設定して this.focus.styleRow(inRow) と this.edit.styleRow(inRow) を呼び出す以外に何もしません。これらの行を関数に追加しても効果はありません。

4

2 に答える 2

2
inRow.customStyles = "backgrund-color: #FFCC00";

スペルをbackground間違えたようです。

于 2010-12-16T14:31:07.310 に答える
1

カスタム クラスの場合は、行のクラスをオーバーライドするのではなく、クラスを (先頭にスペースを入れて) 追加することをお勧めします。クラスを置き換えると、デフォルトの CSS が台無しになります。それがあなたの望むものでない限り...

inRow.customClasses += "dojoxGridMYRow";

はい、最後にこれが必要です:

dojox.grid.DataGrid.prototype.onStyleRow.apply(this, arguments);

あなたの問題は見ていませんが、プログラムでグリッドを作成し、Dojo 1.7 を使用しているため、環境はかなり異なります。

于 2012-06-04T21:28:55.103 に答える