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