我有 2MultiSelects
在一个ItemSelector
,它本身在一个FormPanel
。每个MultiSelect
由 2 组成Stores
:左侧和右侧(用箭头在 2 之间移动项目)。
当我加载面板时,我提供了一个参考,以突出显示从一侧移动到另一侧的项目(例如,将移动项目的样式设置为红色),因为今天没有办法区分它们。
我设法通过 DOM 访问捕获事件afterAdd
并Stores
应用我的样式。这在跟踪期间有效,但稍后会执行剩余的 ExtJS 标准调用,覆盖我刚刚应用的样式......
我觉得我正在做的不是好方法,但我是 ExtJS 的新手,所以我在这里有点迷失......谢谢你的帮助!
编辑:这是我的代码示例,我忘了告诉我我在 ExtJS 3.2 上工作(嗯......)。pool_cnx_to_rule
是我的FormPanel
:
pool_cnx_to_rule.afterMethod('add', function ()
{
//var pools_available_ = Ext.getCmp('pools_available').getValue();
var pools_selected_ = Ext.getCmp('pools_selected').getValue();
var i, j;
for (i = 0; i < pool_cnx_to_rule.data.length; ++i)
{
var pool_descr_ = pool_cnx_to_rule.data.items[i].data.pool_descr;
var changed = true;
for (j = 0; j < pool_cnx_to_rule_ref.length; ++j)
{
if (pool_cnx_to_rule_ref[j] == pool_descr_)
{
changed = false;
break;
}
}
if (changed)
{
var pools_selected_ = Ext.getCmp('pools_selected');
var nodes_ = pools_selected_.view.getNodes();
var node_ = nodes_[j];
var record_ = pools_selected_.view.getRecord(node_);
record_.set('color', 'red');
// Instead of assigning pools_selected_.view, create var
var view_ = new Ext.ListView({
multiSelect: true,
store: pools_selected_.store,
columns: [{
dataIndex: pools_selected_.displayField,
header: 'Value',
width: 1,
tpl: new Ext.XTemplate(
'<tpl if="red==true">',
'<div class="red">{' + pools_selected_.displayField + '}</div>',
'<tpl else>',
'<div>{' + this.displayField + '}</div>',
'</tpl>'
),
}],
hideHeaders: true
});
pools_selected_.fs.items.clear();
pools_selected_.fs.add(view_);
pools_selected_.fs.doLayout();
}
}
});