【项目实战】——Tree树显示过程核心

前言:

最近的项目中用到了曲线,但在这个过程中Tree树的显示是它的基础,不仅用到了一层的Tree,也用到了两层的Tree,小编的上一篇博客中对Tree树进行了简单介绍,这次对于一层和两层的Tree树显示过程中Controller的核心代码进行了总结。

一层的Tree:

效果:


核心代码:

        public ActionResult queryIndicator(int PrjID , int VolunteerGroupID,int VolunteerID )
        {
            DataTable dt = new DataTable();
           
            dt = bll.queryIndicator(PrjID,VolunteerGroupID,VolunteerID);
            List<JsonTree> list = initTree(dt);
            var json = JsonConvert.SerializeObject(list);
            return Content(json);
        }

        //目录树相关
        public List<JsonTree> initTree(DataTable dt)
        {
             DataRow[] drList = dt.Select();
            List<JsonTree> rootNode = new List<JsonTree>();
            foreach (DataRow dr in drList)
            {
                JsonTree jt = new JsonTree();
                jt.id = Convert.ToInt32(dr["IndicatorCode"]);
                jt.iconCls = "icon-blank";
                jt.text = dr["IndicatorName"].ToString();
                jt.state = "open";
                rootNode.Add(jt);

            }
            return rootNode;
        }

两层的Tree树:

效果:


核心代码:

 //(目录树)
        public ActionResult GetVolunGroup(int prjID)
        {
            DataTable dt = new DataTable();
            dt = bllVolunBasicMulAna.GetVolunGroup(prjID);
            List<JsonTree> list = initTree(dt);
            var json = JsonConvert.SerializeObject(list);
            return Content(json);

        }

        //目录树相关
        public List<JsonTree> initTree(DataTable dt)
        {
            DataRow[] drList = dt.Select();//所有表数据
            List<JsonTree> parentNodes = new List<JsonTree>();//父级节点
            foreach (DataRow dr in drList)
            {
                JsonTree parentNode = null;
                parentNode = parentNodes.Find(e => e.id == Convert.ToInt32(dr["VolunteerGroupID"]));
                if (parentNode == null)
                {
                    parentNode = new JsonTree();
                    parentNode.id = Convert.ToInt32(dr["VolunteerGroupID"]);
                    parentNode.text = dr["VolunGroupName"].ToString();
                    parentNode.state = "closed";
                    parentNode.iconCls = "icon-blank";
                    //jt.attributes = CreateUrl(dt, jt);
                    parentNode.children = CreateChildTree(dt, parentNode);//子集节点
                    parentNodes.Add(parentNode);
                }
                //若该父节点已存在
                else
                {
                    continue;
                }
            }
            return parentNodes;
        }

总结:

初次接触感觉很难,要静下心来仔细分析,慢慢就会发现其实并没有想想中的那么难,站在巨人的肩膀上,不断前进。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值