easyUI中Tree的实现问题

最近项目选择easyUI作为项目的前端显示组件,原因有两个一个是公司的美工确实不给力设计出来的东西太难看了,另一个原因就是easyUI有很多组件用起来很方便。

 

今天说要做机构管理,需要一个机构树,小弟说机构树做不出来,我觉得不应该啊!

 

于是我就介入,一下午的时间过去了,我也没有做出来,怎么办了,突然想到easyUI的例子,于是将关于Tree的例子拷到工程中,已运行发现没有问题

恍然大悟肯定是数据结构的问题,于是我把自己后台的数据打印出来和json文件中的做对比,发现确实是数据的问题,

 

经过上面一段时间的折腾,我将重点放到了我们的关于机构树的数据结构上,具体代码如下:

页面中代码:

$(function(){
    
    $('#mmtree').tree({      
     url : "<%=request.getContextPath()%>/org/orgShowTreeAction.action",
     onClick: function(node){
       var orgId = node.id;
       var orgName = node.text;

       $.get('<%=request.getContextPath()%>/org/orgSearchAction.action?org.orgId=' + orgId
          + '&rdm=' + Math.random(),
          function(data) {
          $('#showOrgParentId').attr("value", data.orgParentId);
          $('#showOrgParentName').attr("value", data.orgParentName);
          $('#showOrgId').attr("value", orgId);
          $('#showOrgName').attr("value", orgName);
       });
     } 
     });

});

 

后台Java代码:

private JSONArray result1;

 

public String orgShowTree(){
  List<OrgVO> listVO = orgService.getOrgInfos();   
  result1 = JSONArray.fromObject(new OrgClassify().createOrgTree(listVO));
  return SUCCESS;
 }

 

文件夹类:

/**
 *   @类名: OrgClassify
 *   @描述: 有叶子节点的机构
 *   @作者: 
 *   @生成时间: 2013-7-4 上午09:42:48
 *   @修改人:
 *   @修改时间: 
 **/
public class OrgClassify extends AbstractOrgTree{
    private List<AbstractOrgTree> children;
 public List<AbstractOrgTree> getChildren() {
  return children;
 }
 public void setChildren(List<AbstractOrgTree> children) {
  this.children = children;
 }
 
 /**
  *   @生成时间: 2013-7-5 上午09:43:23
  *   @方法说明: 将机构信息转化为机构树
  *   @参数:
  *   @返回值:
  *   @异常:
  **/
 public OrgClassify createOrgTree(List<OrgVO> listVO){
  int level = 0;
  for(OrgVO orgVO : listVO){
   int newLevel = Integer.parseInt(orgVO.getLevelNo());
   if(newLevel > level){
    level = newLevel;
   }
  }
  OrgVO first = listVO.get(0);
  OrgClassify orgcls = new OrgClassify();
  orgcls.setId(first.getOrgId());
  orgcls.setText(first.getOrgName());
  orgcls.setState("close");
  
  if(level != 0){
   level++;
   for(int i = 1; i < level; i++){
    for(OrgVO orgVO : listVO){
     int currentLevel = Integer.parseInt(orgVO.getLevelNo());
     if(currentLevel == i){
      boolean isLeaf = true;
      for(OrgVO orgVOtmp : listVO){
       if(orgVO.getOrgId().equals(orgVOtmp.getOrgParentId())){
        isLeaf = false;
        break;
       }
      }
      AbstractOrgTree temptree = null;
      if(isLeaf){
       temptree = new OrgLeaf();
       temptree.setId(orgVO.getOrgId());
       temptree.setText(orgVO.getOrgName());
       temptree.setState("close");
      }else{
       temptree = new OrgClassify();
       temptree.setId(orgVO.getOrgId());
       temptree.setText(orgVO.getOrgName());
       temptree.setState("close");
      }
      saveResultLeaf(orgVO.getOrgParentId(), temptree, orgcls);
     }
    }
   }
  }
  return orgcls;
 }
 
 private void saveResultLeaf(String orgParentId, AbstractOrgTree midorgleaf, AbstractOrgTree orgcls){
  if(orgcls.getId().equals(orgParentId)){
   OrgClassify tmpcls = (OrgClassify)orgcls;
   if(null != tmpcls.getChildren()){
    tmpcls.getChildren().add(midorgleaf);
   }else{
    List<AbstractOrgTree> cld = new ArrayList<AbstractOrgTree>();
    cld.add(midorgleaf);
    tmpcls.setChildren(cld);
   }
  }else{
   if(orgcls instanceof OrgClassify){
    List<AbstractOrgTree> tempTree = ((OrgClassify)orgcls).getChildren();
    if(null != tempTree)
     for(AbstractOrgTree trr : tempTree){
      saveResultLeaf(orgParentId, midorgleaf, trr);
     }
   }
  }
 }
}

 

文件对象:

/**
 *   @类名: OrgLeaf
 *   @描述: 无叶子节点的分类
 *   @作者:
 *   @生成时间: 2013-7-4 上午09:43:05
 *   @修改人:
 *   @修改时间: 
 **/
public class OrgLeaf extends AbstractOrgTree{
   
}

/**
 *   @类名: AbstractOrgTree
 *   @描述: 机构树基础类
 *   @作者: 
 *   @生成时间: 2013-7-5 上午10:25:04
 *   @修改人:
 *   @修改时间: 
 **/
public abstract class AbstractOrgTree {
 private String id;
    private String text;
    private String state;
 public String getId() {
  return id;
 }
 public void setId(String id) {
  this.id = id;
 }
 public String getText() {
  return text;
 }
 public void setText(String text) {
  this.text = text;
 }
 public String getState() {
  return state;
 }
 public void setState(String state) {
  this.state = state;
 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值