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-cellDOM要素に追加されます。

お役に立てば幸い

于 2014-08-18T22:57:12.973 に答える
0

これを実現するには、代わりにツリーをツリーグリッドと考える必要があります。1つの列のみを使用してツリーの列定義を設定し、列のヘッダーを非表示にして、レンダラーを列に追加します。

その後、ハイライトされた行に対して定義された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 に答える