/// <summary> /// 当分组信息发生变化的时候 增量式重新加载节点 /// </summary> public void UpdateSpecial() { var info = Wlst.Sr.EquipmentInfoHolding.Services.ServicesGrpSingleInfoHold.GetRtuNotInAnyGroup(AreaId); if (info.Count == 0) { this.ChildTreeItems.Clear(); if (_father != null) { _father.ChildTreeItems.Remove(this); } return; } //node delete for (int i = this.ChildTreeItems.Count - 1; i >= 0; i--) { if (ChildTreeItems[i].NodeType != TypeOfTabTreeNode.IsTml) { this.ChildTreeItems.RemoveAt(i); continue; } if (info.Contains(ChildTreeItems[i].NodeId) == false || !Sr.EquipmentInfoHolding.Services.EquipmentDataInfoHold.InfoItems.ContainsKey( ChildTreeItems[i].NodeId)) { this.ChildTreeItems.RemoveAt(i); } } //tml add and update var exist = (from t in ChildTreeItems select t.NodeId).ToList(); foreach (var t in info) { if (exist.Contains(t)) { continue; } var para = Sr.EquipmentInfoHolding.Services.EquipmentDataInfoHold.GetInfoById(t); if (para == null || para.EquipmentType != WjParaBase.EquType.Rtu) { continue; } if (para.RtuFid != 0) { continue; } var vol = para as Wj3005Rtu; if (vol != null && vol.WjVoltage.RtuUsedType == 2) { ChildTreeItems.Add(new TreeNodeItemTmlViewModel(this, para)); } } //按给定顺序排序 var ntss = ServicesGrpSingleInfoHold.GetRtuOrGrpIndex(info); var idc = new Dictionary <int, TreeNodeBaseNode>(); foreach (var f in this.ChildTreeItems) { if (!ntss.Contains(f.NodeId)) { continue; } int index = ntss.IndexOf(f.NodeId); if (idc.ContainsKey(index) == false) { idc.Add(index, f); } } for (int i = 0; i < ChildTreeItems.Count; i++) { if (idc.ContainsKey(i) == false) { continue; } if (ChildTreeItems.Count < i) { continue; } if (ChildTreeItems[i].NodeId != idc[i].NodeId) { if (ChildTreeItems.Contains(idc[i])) { ChildTreeItems.Remove(idc[i]); } ChildTreeItems.Insert(i, idc[i]); } } }