2012-06-29 30 views
2

ExtJS 4:在TreePanel中设置节点的图标

我已经创建了一个treepanel。 我想为自己的节点设置自己的图标,所以我使用每个节点的iconCls属性。它的工作。但是,当我展开一个节点时,它将返回到其正常的“打开文件夹”图标。

var treeObject = { 
text: "BANK OF AMERICA 1", 
cls: "enterprise", 
children: [ 
    { 
     text: "core outputs", 
     cls: "businessUnit", 
     iconCls: 'abc' 
    } 
], 
iconCls: 'abc', 
leaf: "false", 
expanded: true, 
type: "enterprise" 
} 
treePanel.setRootNode(treeObject); 

请建议一些措施以避免此问题。

回答

1

尝试指定你的CSS类像这样以防止越权与ExtJS的

.x-grid-tree-node-expanded .x-tree-icon-parent.abc{ 
    background: url(abc) x y no-repat !important; 
} 
+0

我只需要包括!重要的url()后,甚至没有改变我的CSS的名称。而已。 非常感谢。 但是请告诉我为什么只有在展开节点时才会覆盖它。 – Shashwat

+0

extjs代码在它设置折叠和展开文件夹图标(有两个不同的图像,打开和关闭,它用于显示)之前,不会检查是否给它定制了iconCls。它只是在这些事件触发时将图标设置为默认值。 – Reimius

+0

@PaulSchroeder!你的意思是说!重要的是压倒他们的CSS?但是当我展开节点时,它设置了默认图标;但是当我折叠它时,它再次显示我的自定义CSS。我没有得到这个。 – Shashwat

0

从Ext JS的4.0.6启动的默认类,你可以使用icon配置上Ext.data.NodeInterface设置您的节点图标 - 只是定义一个名为您的手机型号“图标”字段,用它为您treestore ...

Ext.define('ModelForTreeNodes', { 
    extend: 'Ext.data.Model', 
    fields: [ 
     { name: 'icon', type: 'string', defaultValue: "Images/nodeicon.png" }, 
     // other fields 
    ], 
    // other config options 
}); 

然后,你可以通过简单的设置节点上的图标字段更改图标...就是这样。

var node = myTree.getStore().getNodeById(nodeId); 
node.set('icon', 'Images/newIcon.png');