Ext JS的树显示的样式如下:
、
有时候有需要修改某个或者某些节点的样式, 比如某些节点的字体加粗,或者改变某些节点的颜色。这该如何实现呢?
实现分析
- 在 Ext.tree.Panel 中提供了getRootNode() 方法看起来是获取根节点的, 但其实这个方法是获取根节点的数据, 也就是返回的对象类型是 Ext.data.TreeModel 。
- Ext.tree.View 提供了 getNode() 的方法, 可以通过数据获取显示的节点, 这个方法的返回类型是 HTMLElement, HTMLElement不是Ext JS的类型, 而是HTML的基本类型, 所以没有用来设置样式的方法, 但是可以通过 .style 或者 .className的方式来设置样式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Igezn2uf-1678891478504)(images/screenshot_1678890546149.png)] - Ext.tree.Panel 的getView() 方法可以得到Ext.tree.View 的对象, 进而可以根据节点数据获取节点的显示元素。
示例
综合上面的分析, 设置一棵树的所有节点的字体颜色的代码如下:
treePanel.getRootNode().cascade({after:function(n){
if(treePanel.getView()!=null&&treePanel.getV