应客户需要,如何在Tree节点上增加变色状态位

   对于Dojo中tree的例子,我也介绍过一些了,有创建复杂tree的,有增加右键菜单项的,有处理节点拖拽的,有响应节点单(双)击的,等等。
   客户说,他们要树上面尽可能多的展现多维信息,于是我弄了个TreeGrid给他们show过之后,满意了。但是层级结构有不那么明显,反而长成了DataGrid的样子。经过几次修改,还是采用Tree来构造这么一个多维信息树。
   如下图,在节点处增加了各自的状态信息,并标以不同的颜色用于区分。并增加了右键操作,让结构更加紧凑一些。
   可以在这个树上面对制度进行快捷的右键操作,并可以通过点击节点来查看其详情信息(页面为左右结构,左侧为树形结构,右侧围制度详情信息页面)。



   从这棵树的样子上,可以猜到我是如何加上变色状态位的。在tree的onOpen属性方法中做文章,修改css样式就可以。

页面代码:

js代码:
this.workTree = new dijit.Tree({
      model : this.workModel,
      openOnClick : false,
      onOpen : function(event){
            //处理 节点的状态
            if(event.children == undefined ){
                  return;
            }
            var children = event.children;
            for ( var i = 0; i < children.length; i++) {
                  var item = children[i];
                  var tNode = this.getNodesByItem(item);
                  var status = this.model.store.getValue(item,"status");
                  if(status != null){
                        //定义属性颜色组合
                        var statusClassMap = {
                                    "已发布" : "Released",
                                    "未申请" : "Unapply",
                                    "已申请" : "Applied",
                                    "已编制" : "Documented",
                                    "已撤销" : "Withdrawn"
                        };
                        if((tNode = tNode[0])){
                              if((tNode.labelNode.innerHTML.indexOf("<span class") != -1) ||
                                          (tNode.labelNode.innerHTML.indexOf("<SPAN class") != -1)){   //从浏览器兼容性考虑,在IE8下<span>标签为大写<SPAN>
                                    return ;
                              }
                              var colorHtml = [];
                              colorHtml.push("<span class='");
                              colorHtml.push(statusClassMap[status] || "");
                              colorHtml.push("' >");
                              colorHtml.push("    " + status);
                              colorHtml.push("</span>");
                              tNode.labelNode.innerHTML = tNode.labelNode.innerHTML + colorHtml.join("");
                        }
                  }
            }
            
            console.dir(["_onRetrieveTag_event",event]);
      },
      onClick : dojo.hitch(this, this._onClickItem),
      onDblClick : dojo.hitch(this, this._onDbClickItem),
      persist : false
});

css代码

css代码:
.ecmStandardRuleStructureManage .dijitTreeLabel .Released{
      color : blue;
}
.ecmStandardRuleStructureManage .dijitTreeLabel .Unapply{
      color: red;
}
.ecmStandardRuleStructureManage .dijitTreeLabel .Applied{
      color: orange;
}
.ecmStandardRuleStructureManage .dijitTreeLabel .Documented{
      color: green;
}
.ecmStandardRuleStructureManage .dijitTreeLabel .Withdrawn{
      color: black;
}


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是一道光_

1分也是爱,鼓励鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值