/// <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); }
/// <summary> /// Признак наличия у элемента потомков /// </summary> /// <param name="treeNodeType">Тип элемента дерева</param> /// <param name="parent">Идентификатор родительского элемента</param> /// <returns>true-у родителя есть потомки</returns> private bool IsHasChilds(DepartmentTreeNodeType treeNodeType, Guid parent) { string commandText = string.Empty; switch (treeNodeType) { case DepartmentTreeNodeType.DivisionState: commandText = "select count(Id) as ChildsCount from DivisionState where ParentId='" + parent + "'"; break; case DepartmentTreeNodeType.DepartmentState: commandText = "select count(Id) as ChildsCount from DepartmentState where ExpirationDate IS NULL AND ParentId='" + parent + "'"; break; } SqlConnection connection = DBHelper.GetConnection(); var cmd = new SqlCommand(commandText, connection); try { connection.Open(); string childCount = cmd.ExecuteScalar().ToString(); int nodeChildsCount; if (int.TryParse(childCount, out nodeChildsCount)) { if (nodeChildsCount > 0) { return(true); } } } catch (Exception ex) { ShellLogger.WriteLog("DB.log", "Ошибка проверки наличия дочерних элементов", ex); } finally { connection.Close(); } return(false); }