0

Extjs4.1.0を使用しています。

アクションカラムのあるグリッドがあります。いくつかの条件に基づいて、このアクション列のアイコンを変更する必要があります。

この列のアイコンをレンダリングするために3つのgetClassメソッドを使用しています。

xtype: 'actioncolumn',
items: [
{
    getClass: function (v, meta, rec)
    {
        if (rec.get('fieldDeleteFlag') == false) return 'x-grid-del-css';
        else return '';
    },
    handler: function (grid, rowIndex, colIndex)
    {
        alert('delete');
    }
},{
    getClass: function (v, meta, rec)
    {
        if (rec.get('fieldDeleteFlag') == false) return 'x-grid-edit-css';
        else return '';
        handler: function (grid, rowIndex, colIndex)
        {
            alert('edit');
        }
},{
    getClass: function (v, meta, rec)
    {
        if (rec.get('fieldDeleteFlag') == true) return 'x-grid-activate-css';
        else return '';
    }
    handler: function (grid, rowIndex, colIndex)
    {
        alert('Activate');
    }
}],    

grid.getStore().getAt(rowIndex).set('change',false);

したがって、フラグがfalseの場合、編集と削除の2つのアイコンが必要です。フラグがtrueの場合、アイコンをアクティブ化するだけです。

アクティブ化アイコンハンドラーをクリックすると、フラグ列がfalseに設定され、この行の編集アイコンと削除アイコンのみが表示されます。

グリッドがレンダリングされているとき、アイコンは完全に表示されます。しかし、アクティブ化ハンドラーをクリックすると、アクティブ化アイコンを削除して、編集アイコンと削除アイコンを表示できません。

どんな体でもこれを行う方法を教えてもらえますか...

4

1 に答える 1

0

grid.refresh()セル値を設定してからご利用いただけます。

handler: function(grid, rowIndex, colIndex) {
    var rec = store.getAt(rowIndex);
    var change = rec.get('change');
    rec.set('change', -change);
    grid.refresh();
}
于 2012-08-10T13:09:00.753 に答える