Вы могли бы использовать actioncolumn в гриде. Вот кусок кода из одного проекта:
{
xtype: 'actioncolumn',
width: 50,
align: 'center',
items: [
{
icon: '/images/company7/desktop_toolbar_undo.gif',
tooltip: Localtext.heading.revert_to_draft,
getClass: function(v, meta, record){
if( ! record.isRound || record.get('IsDraft') ) return 'x-hidden-display';
},
handler: 'doRevert'
}
]
}
Фишка вот в чем: создаете айтемы для всех возможных значений, но прячете неподходящие с помощью функции getClass. Когда хендлер сменит поле строки, getClass снова вызовется и обновит грид.