/// <summary> /// Заполнение дерева подразделений /// </summary> public void FillTreeByDivision(Guid selectedDivision) { _selectedDivision = selectedDivision; if (selectedDivision != Guid.Empty) { _selectedNodeParentList = GetDivisionParents(_selectedDivision); } Nodes.Clear(); foreach (var divisionState in GetDivisionState(Guid.Empty)) { int currentDivisionLoadLevel = 1; //int currentDepartmentLoadLevel = 2; var divisionStateTreeNode = new CustomTreeNode { Text = divisionState.Value, Value = divisionState.Key.ToString(), Tag = DepartmentTreeNodeType.DivisionState }; if (!_selectedNodeParentList.ContainsKey(divisionState.Key)) { divisionStateTreeNode.Collapse(); } Nodes.Add(divisionStateTreeNode); //Заполнение дерева DivisionState CreateDivisionStateTreeChildNodes(divisionStateTreeNode, divisionState.Key, ref currentDivisionLoadLevel, true); } }
/// <summary> /// Создание элемента дерева /// </summary> /// <param name="treeNodeType">Тип элемента</param> /// <param name="Text">Текст</param> /// <param name="Value">Значение</param> /// <returns>Элемент дерева</returns> private CustomTreeNode CreateCustomTreeNode(DepartmentTreeNodeType treeNodeType, String Text, Guid Value) { var node = new CustomTreeNode { Text = Text, Value = Value.ToString(), Tag = treeNodeType, ImageUrl = treeNodeType == DepartmentTreeNodeType.DivisionState ? _divisionTreeNodeTypeImageUrl : _departmentTreeNodeTypeImageUrl }; if ((_selectedNodeParentList.ContainsKey(Value)) && Value != _selectedDivision) { node.Expand(); } else { //Если не вызвать то сработает событие Expand и загрузятся лишние элементы node.Collapse(); } if (_selectedDivision != Guid.Empty && Value == _selectedDivision) { node.Selected = true; CurrentSelectedNode = node; } return(node); }