internal override void RequestTreeItems(TreeGridRequestTreeItemsEventArgs e) { bool canPopualate = (e.ParentNode != null && e.ParentNode.ChildNodes.Any() && e.ResetChildAndRepopulate) || (e.ParentNode != null && !e.ParentNode.ChildNodes.Any()) || e.ParentNode == null; if (!canPopualate) { if (e.ParentNode != null) { if (SortDescriptions.Any()) { e.ParentNode.ChildNodes.Sort(SortDescriptions, SortComparers); } } return; } if (e.ParentItem == null) { e.ChildItems = GetChildSourceFromParentID(SelfRelationRootValue, e.ParentItem, true); } else { object parentValue = propertyAccessProvider.GetValue(e.ParentItem, parentPropertyName); e.ChildItems = GetChildSourceFromParentID(parentValue, e.ParentItem, e.CanAddChildNode); } if (e.CanAddChildNode) { PopulateTreeNodes(e); if (this.SortDescriptions.Any()) { SortNodes(e.ParentNode); } } }
internal override void RequestTreeItems(TreeGridRequestTreeItemsEventArgs e) { bool canPopualate = (e.ParentNode != null && e.ParentNode.ChildNodes.Any() && e.ResetChildAndRepopulate) || (e.ParentNode != null && !e.ParentNode.ChildNodes.Any()) || e.ParentNode == null; if (!canPopualate) { if (e.ParentNode != null) { if (SortDescriptions.Any()) { e.ParentNode.ChildNodes.Sort(SortDescriptions, SortComparers); } } return; } if (e.ParentItem == null) { e.ChildItems = TreeGrid.ItemsSource as IEnumerable; } if (e.CanAddChildNode) { PopulateTreeNodes(e); if (this.SortDescriptions.Any()) { SortNodes(e.ParentNode); } } }
internal override void RequestTreeItems(TreeGridRequestTreeItemsEventArgs e) { bool canPopualte = (e.ParentNode != null && e.ParentNode.ChildNodes.Any() && e.ResetChildAndRepopulate) || (e.ParentNode != null && !e.ParentNode.ChildNodes.Any()) || e.ParentNode == null; if (!canPopualte) { if (e.ParentNode != null && SortDescriptions.Any()) { e.ParentNode.ChildNodes.Sort(SortDescriptions, SortComparers); } return; } this.TreeGrid.RaiseRequestTreeItemsEvent(e); if (e.CanAddChildNode) { PopulateTreeNodes(e); if (e.ChildItems != null) { WireNotifyPropertyChange(e.ChildItems); } if (this.SortDescriptions.Any()) { SortNodes(e.ParentNode); } } }
private void AddNodesUnderRootNodes(object item) { TreeNode parentNode = null; if (SortDescriptions.Count == 1 && SortDescriptions.Any(desc => desc.ColumnName == parentPropertyName)) { object newAddItem = null; object childValue = propertyAccessProvider.GetValue(item, childPropertyName); var itemType = this.SourceCollection.GetItemType(true); if (itemType != null) { if (itemType.IsInterface() || itemType.IsAbstract()) { newAddItem = null; } else { newAddItem = itemType.CreateNew(); } propertyAccessProvider.SetValue(newAddItem, parentPropertyName, childValue); } var tempNode = new TreeNode() { Item = newAddItem }; parentNode = FindParentNode(this.Nodes.RootNodes, tempNode); } else { object childValue = propertyAccessProvider.GetValue(item, childPropertyName); parentNode = FindParentNode(this.Nodes.RootNodes, childValue); } if (parentNode == null) { return; } if (parentNode.IsExpanded || parentNode.ChildNodes.Any()) { AddNode(parentNode, item, parentNode.ChildNodes.Count); } else { if (!parentNode.HasVisibleChildNodes) { // If FilterLevel is Root, no need to update HasVisibleChildNodes based on filtering. if (FilterLevel != FilterLevel.Root) { UpdateHasVisibleChildNodesBasedOnChildItem(parentNode, item); } } } parentNode.HasChildNodes = true; ChangeParentNodeExpander(parentNode); }
private void RemoveNodesUnderRootNodes(object item) { TreeNode parentNode = null; // Remove nodes under Root nodes if (SortDescriptions.Count == 1 && SortDescriptions.Any(desc => desc.ColumnName == parentPropertyName)) { object CurrentAddItem = null; object childValue = propertyAccessProvider.GetValue(item, childPropertyName); var itemType = this.SourceCollection.GetItemType(true); if (itemType != null) { if (itemType.IsInterface() || itemType.IsAbstract()) { CurrentAddItem = null; } else { CurrentAddItem = itemType.CreateNew(); } propertyAccessProvider.SetValue(CurrentAddItem, parentPropertyName, childValue); } var tempNode = new TreeNode() { Item = CurrentAddItem }; parentNode = FindParentNode(this.Nodes.RootNodes, tempNode); } else { object childValue = propertyAccessProvider.GetValue(item, childPropertyName); parentNode = FindParentNode(this.Nodes.RootNodes, childValue); } if (parentNode == null) { return; } if (parentNode.IsExpanded || parentNode.ChildNodes.Any()) { RemoveNode(parentNode, item); } else { if (parentNode.HasChildNodes) { parentNode.isVisibleChildNodeAvailabilityChecked = false; ChangeParentNodeExpander(parentNode); } } }
internal override void RequestTreeItems(TreeGridRequestTreeItemsEventArgs e) { bool canPopualate = (e.ParentNode != null && e.ParentNode.ChildNodes.Any() && e.ResetChildAndRepopulate) || (e.ParentNode != null && !e.ParentNode.ChildNodes.Any()) || e.ParentNode == null; if (!canPopualate) { if (e.ParentNode != null) { if (SortDescriptions.Any()) { e.ParentNode.ChildNodes.Sort(SortDescriptions, SortComparers); } } return; } if (e.ParentItem == null) { e.ChildItems = TreeGrid.ItemsSource as IEnumerable; } else { if (!e.ParentNode.HasChildItems || e.ResetChildAndRepopulate) { e.ChildItems = GetChildSource(e.ParentItem, childPropertyName); if (e.ChildItems is INotifyCollectionChanged) { e.ParentNode.HasChildItems = true; } } else { e.ChildItems = (IEnumerable)e.ParentNode.ChildItems; } } if (e.ChildItems != null && e.ParentNode != null) { WireNotifyPropertyChange(e.ChildItems, e.ParentNode); } if (e.CanAddChildNode) { PopulateTreeNodes(e); if (this.SortDescriptions.Any()) { SortNodes(e.ParentNode); } } }
/// <summary> /// Determines whether a view refresh is needed. /// </summary> /// <param name = "propertyName">The name of the changed property.</param> /// <returns> /// <c>True</c> if a view refresh needed; otherwise, <c>false</c>. /// </returns> private bool IsViewRefreshNeeded(string propertyName) { return(SortDescriptions.Any(sort => string.Equals(sort.PropertyName, propertyName)) || GroupDescriptions.OfType <PropertyGroupDescription>().Where(g => string.Equals(g.PropertyName, propertyName)).Any()); }