ExtJS 4:
Я создал панель дерева. Я хотел установить свои собственные значки для его узла, поэтому я использовал свойство 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 · рейтинг 1 · elweilando
попробуйте указать свой класс css таким образом, чтобы предотвратить переопределение с классами extjs по умолчанию
.x-grid-tree-node-expanded .x-tree-icon-parent.abc{
background: url(abc) x y no-repat !important;
}
Ответ 2 · stambikk
Начиная с Ext Js 4.0.6, вы можете использовать icon config на Ext.data.NodeInterface для установки значков ваших узлов - просто определите поле с именем "значок" в своей модели, используйте его для своего хранилища деревьев...
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');