2012-06-29 59 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'); 
相關問題