我在一个表单面板中有两个多选框,它们被放置在一个项目选择器中。每个多选框由两个存储区组成:左侧和右侧(带有箭头移动项目)。
当我加载面板时,我提供一个引用,以突出从一侧移到另一侧的项目(例如,将已移动项目设置为红色样式),因为今天没有办法区分它们。
我成功地捕获了“afterAdd”事件,在存储库上应用我的样式,通过DOM访问来实现。这在跟踪期间有效,但稍后执行剩余的ExtJS标准调用,覆盖了我刚刚应用的样式...
我觉得我做的不好,但我对ExtJS还很陌生,所以有点迷茫...谢谢你的帮助!
编辑:这里是我的代码示例,我忘记告诉你我是在ExtJS 3.2上工作的(嗯...)。 "pool_cnx_to_rule"是我的表单面板:
当我加载面板时,我提供一个引用,以突出从一侧移到另一侧的项目(例如,将已移动项目设置为红色样式),因为今天没有办法区分它们。
我成功地捕获了“afterAdd”事件,在存储库上应用我的样式,通过DOM访问来实现。这在跟踪期间有效,但稍后执行剩余的ExtJS标准调用,覆盖了我刚刚应用的样式...
我觉得我做的不好,但我对ExtJS还很陌生,所以有点迷茫...谢谢你的帮助!
编辑:这里是我的代码示例,我忘记告诉你我是在ExtJS 3.2上工作的(嗯...)。 "pool_cnx_to_rule"是我的表单面板:
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();
}
}
});