0

ウィンドウ内にグリッドがあります。グリッドには、編集、削除、無効化の3つのアクションがあります。無効化アクション(現在は「無効化/有効化」)のテキストを、選択したレコードの現在のステータスに依存させることができるかどうか疑問に思いました。したがって、ユーザーが現在のステータスが有効になっているレコードを選択した場合、アクションのテキストは「無効」になります。ただし、ユーザーがステータスが無効になっているレコードを選択した場合、アクションのテキストは「有効」である必要があります。アクションを使用するときにこれを行うことは可能ですか?または、アクションの代わりにボタンを使用する必要がありますか?

4

2 に答える 2

0

アクション ボタンは、グリッド パネルの上部にドッキングされているツールバーにあると想定しています。唯一のトリッキーなことは、グリッドへの参照を取得することです (ハードコーディングせずに)。グリッドの「選択」イベントは、使用されている行モデルへの参照のみを提供します。

/* Set a action attribute on the Ext.Action so we can find it */
var action = new Ext.Action({
    text: 'Do something',
    handler: function(){
        Ext.Msg.alert('Click', 'You did something.');
    },
    iconCls: 'do-something',
    itemId: 'myAction',
    action: 'myAction' // I don't like itemId's personally :)
});

/* In the Controller */
init: function() {
    this.control({
        'mygrid': {
            select: this.onRecordSelect
        }
    });
},

onRecordSelect: function(rowModel, record) {
    var grid = rowModel.views[0].ownerCt);
    var action = grid.getDockedItems('toolbar[dock="top"]')[0].down('button[action="myAction"]');
    var enabled = (record.get('CurrentStatus') == "Enabled");
    action.setText(enabled ? 'Disable' : 'Enable');
    action.setIconCls(enabled ? 'myDisableCls' : 'myEnableCls');
}

/* in SASS */
.myDisableCls{
    background-image:url(#{$icon_path}/checkbox.png) !important;
}
.myEnableCls {
    background-image:url(#{$icon_path}/checkbox_ticked.png) !important;
}

幸運を!

于 2012-12-21T09:29:59.537 に答える
0

別の方法で問題を解決しました。これは私のコードです:

grid.getSelectionModel().on({
        selectionchange: function(sm, selections) {
            if (selections.length > 0) {
                Edit.enable();
                Delete.enable();
                    if(selections[0].data.CurrentStatus == "Disabled"){
                    Disable.setText("Enable");
                    Disable.enable();
                }else{
                    Disable.setText("Disable");
                    Disable.enable();
                }
            } else {
                Edit.disable();
                Delete.disable();
                Disable.disable();
            }
        }
    });
于 2013-01-04T15:06:40.390 に答える