如何搭建树形表格

版权声明:转载来源 《张益达的博客》 https://blog.csdn.net/weixin_44538399 https://blog.csdn.net/weixin_44538399/article/details/86543151

我们借助zTree树形插件,便可以很简单的就实现树形图:
在这里插入图片描述

但是要制作一个树形表格,并在表格里显示数据库查询出的数据,甚至写入自定义的事件就需要注意很多地方。

在这里插入图片描述

首先我们先创建一个树形,配置好参数:

   //树形表格配置
        var zTreeNodes;
        var setting = {
            check: {
                enable: true,
                chkStyle: "radio",
                radioType: "all"
            },
            view: {
                showLine: false,
                showIcon: false,
                addDiyDom: addDiyDom
            },
            data: {
                simpleData: {
                    enable: true,
                    idKey: "NodeWorkID",
                    //当前节点的父节点id属性
                    pIdKey: "LastWorkID",
                }
            }
        };

接下来就可以去请求数据库的数据了,根据条件查询出树形的字段,返回并赋值给树形:

   //json数据
        function query(id) {
            $.ajaxSettings.async=false;
            $.getJSON("SelectListNodeWorkMax",{SchedulePlanID:id},function(data){
                zTreeNodes = data;
                //初始化树
                $.fn.zTree.init($("#dataTree"), setting, zTreeNodes);
                //添加表头
                var li_head = ' <li class="head"><a><div class="diy">OPEN</div><div class="diy">工作项名称</div><div class="diy">计划开始时间</div><div class="diy">计划结束时间</div>' +
                    '<div class="diy">实际开始时间</div><div class="diy">实际结束时间</div><div class="diy">进度</div><div class="diy">操作</div></a></li>';
                var rows = $("#dataTree").find('li');
                if (rows.length > 0) {
                    rows.eq(0).before(li_head)
                } else {
                    $("#dataTree").append(li_head);
                    $("#dataTree").append('<li ><div style="text-align: center;line-height: 30px;" >无符合条件数据</div></li>')
                }
            });
        }

Controller代码:

 public ActionResult SelectAreaInfoByID(int ProjectID )//绑定树形
        {
            try
            {
                var listInfo = (from tbProjectArae in myModels.B_ProjectArea
                                where tbProjectArae.ProjectID == ProjectID && tbProjectArae.LastAreaID!=0
                                select new ProjectInfoVo
                                {
                                    ProjectAreaID = tbProjectArae.ProjectAreaID,
                                    LastAreaID = tbProjectArae.LastAreaID,
                                    ProjectAreaName = tbProjectArae.ProjectAreaName,
                                }).ToList() ;
                return Json(listInfo, JsonRequestBehavior.AllowGet);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                return Json(false, JsonRequestBehavior.AllowGet);
            }
        }

当我们得到所有需要的数据后,就可以将数据添加到树形上,表格是我们自己定义创建的,所以要用到append方法追加给表格。

 /* 自定义DOM节点*/   
        function addDiyDom(treeId, treeNode) {
            var spaceWidth = 15;
            var liObj = $("#" + treeNode.tId);
            var aObj = $("#" + treeNode.tId + "_a");
            var switchObj = $("#" + treeNode.tId + "_switch");
            var icoObj = $("#" + treeNode.tId + "_ico");
            var spanObj = $("#" + treeNode.tId + "_span");
            aObj.attr('title', '');
            aObj.append('<div class="diy swich"></div>');
            var div = $(liObj).find('div').eq(0);
            switchObj.remove();
            spanObj.remove();
            icoObj.remove();
            div.append(switchObj);
            var spaceStr = "<span style='height:1px;display: inline-block;width:" + (spaceWidth * treeNode.level) + "px'></span>";
            var Biu =  "<span>OPEN</span>";
            switchObj.before(spaceStr);
            switchObj.after(Biu);
            var editStr = '';
            editStr += '<div class="diy">' + (treeNode.NodeWorkName) + '</div>';
            editStr += '<div class="diy">' + (treeNode.Planstart) + '</div>';
            editStr += '<div class="diy">' + (treeNode.Planend) + '</div>';
            editStr += '<div class="diy">' + (treeNode.Realitystart) + '</div>';
            editStr += '<div class="diy">' + (treeNode.Realityend) + '</div>';
            editStr += '<div class="diy">' + (treeNode.WorkSchedule) + '%</div>';
            editStr += '<div class="diy">' + formatHandle(treeNode.NodeWorkID) + '</div>';
            aObj.append(editStr);
        }
        //自定义按钮
        function formatHandle(id) {
            var htmlStr = '';
            htmlStr += '<div class="icon_div" onclick="ShowMod('+id+')"><a class="icon_view" title="查看"  href="#"></a></div>';
            htmlStr += '<div class="icon_div" onclick="addSonWork('+id+')"><a class="icon_add" title="添加子工作项" href="#"></a></div>';
            return htmlStr;
        }

这样我们的树形表格就完成了。

猜你喜欢

转载自blog.csdn.net/weixin_44538399/article/details/86543151