10

重大度条件に基づいてデータグリッドの行の色を変更するにはどうすればよいですか? この EXTJS トピックは初めてです。以前は、リーダーで読み取り、ストアからストア、ライターでデータを書き込んでいました。すべてのデータをグリッドにフェッチした後、重大度条件に基づいてデータグリッドの行の色を変更するにはどうすればよいですか? コードの動作について少し説明してもらえますか?

4

3 に答える 3

23

GridViewクラス ( Ext.grid.GridView ) を使用して、グリッドのユーザー インターフェイスを操作できます。GridPanel のviewConfigプロパティを使用することもできます。次に例を示します。

viewConfig: {
        //Return CSS class to apply to rows depending upon data values
        getRowClass: function(record, index) {
            var c = record.get('change');
            if (c < 0) {
                return 'price-fall';
            } else if (c > 0) {
                return 'price-rise';
            }
        }
    }

ps: ExtJS API ドキュメント自体から抜粋した例

価格下落と価格上昇は、それに応じて背景色が設定された CSS です。例えば:

.price-fall { 
 background-color: #color;
}

.price-rise {
 background-color: #color;
}
于 2011-02-15T07:03:25.370 に答える
4

getRowClassのメソッドを使用してそれを行うことができますGridView( Ext JS APIを参照)。

API ドキュメントから引用された例:

viewConfig: {
    forceFit: true,
    showPreview: true, // custom property
    enableRowBody: true, // required to create a second, full-width row to show expanded Record data
    getRowClass: function(record, rowIndex, rp, ds){ // rp = rowParams
        if(this.showPreview){
            rp.body = '<p>'+record.data.excerpt+'</p>';
            return 'x-grid3-row-expanded';
        }
        return 'x-grid3-row-collapsed';
    }
},
于 2011-02-15T06:59:43.677 に答える
0

列モデルから列にレンダラーを使用し、次のような css クラスを割り当てることができます。

そのため、customRenderer 関数:

`

function customRenderer(value, metaData, record, rowIndex, colIndex, store) {
    var opValue = value;
    if (value === "Rejected") {
        metaData.css = 'redUnderlinedText';
    } else if (value === "Completed") {
        metaData.css = 'greenUnderlinedText';
    } else if (value === "Started") {
        metaData.css = 'blueUnderlinedText';
    }
    return opValue;

}`

そして、あなたのコラム:

        {
            header: 'Your Column Header',
            dataIndex: 'your_data_index',
            renderer: customRenderer
        }

次に、CSS は次のようになります。

.redUnderlinedText {
    background-color: blue,
    color: red;
    text-decoration: underline;
    cursor: pointer;
}
于 2011-02-15T13:26:36.283 に答える