2

我想突出显示 Ext.tree.Panel 中的一些节点。

在 Ext3 中,我通过向树节点 ui 对象添加一个类来实现这一点:

// add a class with to highlight the node
myTreeNode.getUI().addClass('highlightclass');

// remove the class to remove the highlighting
myTreeNode.getUI().removeClass('highlightclass');

Ext4 中的等价物是什么?我已经能够通过设置节点模型的 iconCls 字段来更改图标,但我真的希望能够设置一个允许我突出显示整个节点的类。

4

3 回答 3

3

这是我对自己的问题找到的答案:

// add a css class to a specific tree node
myTreePanel.getView().addRowCls(myTreeNode,'highlightclass');

// remove a css class from a specific tree node
myTreePanel.getView().removeRowCls(myTreeNode,'highlightclass');
于 2012-07-03T15:28:27.950 回答
1

虽然所选答案可能有效,但在我的 ExtJS 版本(4.0.7)中,只要我在树面板中展开或折叠节点,css 类就会全部重置。我相信解决这个问题的更永久的方法是

myTreeNode.set('cls', 'highlightclass');

这会将您的类添加到特定树节点的 td.x-grid-cell DOM 元素。

希望有帮助

于 2014-08-18T22:57:12.973 回答
0

要做到这一点,您需要将树视为树形网格。为您的树设置一个只有一列的列定义,隐藏列的标题并向列添加渲染器。

之后,您可以使用为突出显示的行定义的 css 类来定义渲染器,并且可能在行模型上使用一个属性来告诉应该突出显示哪些行:

renderer: function(value, metaData){
    if (whatever you want here as a condition) {
        metaData.tdCls = "x-grid-row-alt-mine";
    }
    return value;
}
于 2012-07-02T19:21:47.277 回答