0

いくつかの列を持つグリッドパネルがあります。値が互いに一致しない場合、行の列に新しいクラスを設定したいと思います。しかし、どうすれば別の行の列に成功することができますか? 彼女は私が試した私のコードですが、IDは未定義です:

...{
    header: 'CRS',  
    dataIndex: 'crs',
    id:'crs',
    flex:1,
    renderer: function(value, meta) {

        console.log("csv-->"+Ext.getCmp('csv').value);

        if(value==Ext.getCmp('csv').value)
            {
                //change class
            }

    }
},
{
    header: 'CSV', 
    dataIndex: 'csv',
    id:'csv',
    flex:1
},...
4

3 に答える 3

2

あなたが投稿したコードは、あなたが求めているものと一致していないようです。コードによると、別の行ではなく、同じ行の全体で値を比較しようとしているようですそれで、それはどれですか?

とにかく、あなたのコードがあなたが望むものを示していると仮定して、レンダラーのドキュメントを見てください: http://docs.sencha.com/extjs/4.2.1/#!/api/Ext.grid. column.Column-cfg-renderer

レンダラー メソッドに渡される引数の 1 つは「レコード」です。これには、行全体の値を埋めるレコードのすべての値が含まれます。列全体で値を比較したい場合は、次のようにすることができます。

if( value==record.get( 'csv ') ) { 
    ...do something here... 
}

全体で値を比較する必要がある場合は、「ストア」も引数の 1 つとしてレンダラーに渡されるため、その方法で特定の行の値と値を比較できます。

または、これのほとんどをモデル自体で行うこともできます。同じ行の列を比較するだけの場合は、比較の結果を格納するモデルに追加のフィールドを作成できます。これを行った場合、レンダラーが行う必要があるのは、全体の比較とレンダリングを行うのではなく、その新しいフィールドの値をオンにすることだけです。

于 2013-09-05T11:27:16.167 に答える
0
{
    header: 'CSV', 
    dataIndex: 'csv',
    flex:1,
    renderer: function(value, meta, record) {
        var crs = record.get('crs');
        if (value && crs)
        {
            if (value != crs) { 
               meta.tdCls = "red-class";
            }
        }
        return value;
    }
},

ExtJS 4 用に書き直され、dataIndex に設定した値を使用できます。これはレコードであるため、値を取得するための extjs 4 の推奨方法は get メソッドです。

レンダラーにはさらに多くのプロパティがあります。完全なリストはこちらで確認できます: http://docs.sencha.com/extjs/4.2.2/#!/api/Ext.grid.column.Column- cfg-レンダラー

于 2014-05-20T17:02:48.337 に答える