private void CreateSubTreeNode(BootstrapTreeViewNode parentNode, int parentID, List <StructureTreeModel> strus, List <int?> ids) { var subStrucs = strus.Where(s => s.ParentID == parentID); if (subStrucs.Count() == 0) { return; } parentNode.nodes = new List <BootstrapTreeViewNode>(); foreach (var item in subStrucs) { bool flag = ids.SingleOrDefault(id => id == item.ID) != null; var temp = new BootstrapTreeViewNode() { text = item.StrucName, tag = item.ID, //ParentNode = parentNode, state = new BootstrapTreeViewNodeState() { @checked = flag, expanded = flag } }; //if (temp.state.@checked)//如果节点是分配过的,那么还需要展开父节点,防止分配了子单位未分配父单位,导致节点未展开 //{ // //parentNode.state.expanded = true; // ExpandParentNode(parentNode); //} parentNode.nodes.Add(temp); CreateSubTreeNode(temp, item.ID, strus, ids); } }
public ActionResult GetRealTimeSignals() { List <RealTimeSignalTreeModel> allItems; if (base.VehicleViewMode) { allItems = SignalBLL.GetDefaultRealTimeSignals(base.CurrentStrucID); } else { allItems = SignalBLL.GetRealTimeSignals(base.CurrentUserID); } if (allItems == null) { allItems = new List <RealTimeSignalTreeModel>(); } allItems = allItems.OrderBy(item => item.SID).ToList(); //提取单位 var query = from item in allItems select new StructureTreeModel { ID = item.SID, StrucName = item.SN, ParentID = item.SPID }; var structures = query.Distinct(new StrucTreeComparer()).ToList(); List <BootstrapTreeViewNode> nodes = new List <BootstrapTreeViewNode>(); for (int i = 0; i < structures.Count; i++) { var item = structures[i]; var tempNode = new BootstrapTreeViewNode() { text = item.StrucName, selectable = false, sid = item.ID, state = new BootstrapTreeViewNodeState() { expanded = false } }; tempNode.nodes = new List <BootstrapTreeViewNode>(); CreateSubStrucNode(tempNode, structures, allItems, item.ID); CreateVehicleNode(tempNode, allItems, item.ID); nodes.Add(tempNode); structures.RemoveAt(i); i--; } //展开第一个 单位节点 if (nodes.Count > 0) { nodes.First().state.expanded = true; } return(Json(nodes, JsonRequestBehavior.AllowGet)); }
private void CreateVehicleNode(BootstrapTreeViewNode tempNode, List <RealTimeSignalTreeModel> allItems, int sid) { var query = allItems.Where(item => item.SID == sid);//找单位ID是当前单位节点的车辆 List <RealTimeSignalTreeModel> list = new List <RealTimeSignalTreeModel>(); foreach (var item in query) { string color = string.Empty; if (item.IsOnline == 0)//掉线 红色 { color = "#ff0202"; } else if (item.Latitude == null)//信号表无数据 { color = "#B766AD"; } else if (item.IsOnline == 1 && item.IsRunning == 1)//在线有速度 { color = "#00a1fe"; } else//在线无速度 停车 灰色 { color = "#8c8c8c"; } tempNode.nodes.Add(new BootstrapTreeViewNode() { text = item.VN, tag = new { VID = item.VID, SN = item.SN, SID = item.SID, IsOnline = item.IsOnline == 1, IsRunning = item.IsRunning == 1, NoSignal = item.Latitude == null },//只有车辆节点才有tag color = color, }); list.Add(item); } //移除添加过的数据 list.ForEach(item => { allItems.Remove(item); }); }
private void CreateSubStrucNode(BootstrapTreeViewNode parentNode, List <StructureTreeModel> list, List <RealTimeSignalTreeModel> allItems, int pid) { var subStrucs = list.Where(s => s.ParentID == pid).ToList(); if (subStrucs.Count == 0) { return; } foreach (var item in subStrucs) { var temp = new BootstrapTreeViewNode() { text = item.StrucName, selectable = false, sid = item.ID }; temp.nodes = new List <BootstrapTreeViewNode>(); CreateVehicleNode(temp, allItems, item.ID); list.Remove(item); CreateSubStrucNode(temp, list, allItems, item.ID); parentNode.nodes.Add(temp); } }
public ActionResult GetDistributiveStrucsByUserID(int uid) { var allStrucs = StructureBLL.GetStructuresForTree(); var userStrucIDs = StructureBLL.GetDistributiveStrucIDByUserID(uid); var parentStruc = allStrucs.Where(s => s.ParentID == null); List <BootstrapTreeViewNode> nodes = new List <BootstrapTreeViewNode>(); foreach (var item in parentStruc) { var temp = new BootstrapTreeViewNode() { text = item.StrucName, tag = item.ID, state = new BootstrapTreeViewNodeState() { expanded = true, @checked = userStrucIDs.SingleOrDefault(id => id == item.ID) != null } }; CreateSubTreeNode(temp, item.ID, allStrucs, userStrucIDs); nodes.Add(temp); } return(Json(nodes, JsonRequestBehavior.AllowGet)); }