public IEnumerable <ISPNode> LoadCollectionChildren(ISPNodeCollection parentNode, int batchCount) { var list = new List <ISPNode>(); if (parentNode.SPObject == null) { return(list); } int count = 0; if (parentNode.Pointer == null) { parentNode.ClearChildren(); parentNode.TotalCount = 0; var collection = (IEnumerable)parentNode.SPObject; parentNode.Pointer = collection.GetEnumerator(); //parentNode.Pointer.Reset(); parentNode.LoadingChildren = parentNode.Pointer.MoveNext(); } while (count < batchCount && parentNode.LoadingChildren) { var current = parentNode.Pointer.Current; var node = CreateCollectionNode(parentNode, current.GetType()); if (node != null) { node.Initialize(new NullPropertyDescriptor(parentNode.Text), parentNode, parentNode.Pointer.Current, parentNode.TotalCount); if (RunIncludeRules(node)) { node.Setup(parentNode); list.Add(node); } } parentNode.LoadingChildren = parentNode.Pointer.MoveNext(); count++; parentNode.TotalCount++; } if (parentNode.TotalCount <= batchCount) { // There are a low number of nodes, therefore sort nodes by Text. return(list.OrderBy(p => p.Text)); } // Just add the elements without any sort, because of the high number of nodes. return(list); }
public IEnumerable<ISPNode> LoadCollectionChildren(ISPNodeCollection parentNode) { int batchCount = SPExplorerSettings.Current.BatchNodeLoad; var list = new List<ISPNode>(); int count = 0; if (parentNode.Pointer == null) { parentNode.ClearChildren(); parentNode.TotalCount = 0; var collection = (IEnumerable)parentNode.SPObject; parentNode.Pointer = collection.GetEnumerator(); //_pointer.Reset(); parentNode.MoveNext = parentNode.Pointer.MoveNext(); } while (count <= batchCount && parentNode.MoveNext) { Type instanceType = parentNode.Pointer.Current.GetType(); ISPNode node = null; if (parentNode.NodeTypes.ContainsKey(instanceType)) { node = parentNode.NodeTypes[instanceType]; } else { if (parentNode.DefaultNode != null) { node = parentNode.DefaultNode; } } if (node != null) { // Always create a new node, because the object has to be unique for each item in the treeview. var instanceNode = (ISPNode) Activator.CreateInstance(node.GetType()); instanceNode.NodeProvider = parentNode.NodeProvider; instanceNode.SPObject = parentNode.Pointer.Current; instanceNode.Setup(parentNode.SPObject); list.Add(instanceNode); } parentNode.MoveNext = parentNode.Pointer.MoveNext(); count++; parentNode.TotalCount++; } // If there is more nodes in the collection, add a "More" item. if (count >= batchCount && parentNode.MoveNext) { var node = new MoreNode(parentNode); node.Setup(parentNode.SPObject); list.Add(node); } if (parentNode.TotalCount <= batchCount) { // There are a low number of nodes, therefore sort nodes by Text. return list.OrderBy(p => p.Text); } // Just add the elements without any sort, because of the high number of nodes. return list; }
public IEnumerable<ISPNode> LoadCollectionChildren(ISPNodeCollection parentNode, int batchCount) { var list = new List<ISPNode>(); if (parentNode.SPObject == null) return list; int count = 0; if (parentNode.Pointer == null) { parentNode.ClearChildren(); parentNode.TotalCount = 0; var collection = (IEnumerable)parentNode.SPObject; parentNode.Pointer = collection.GetEnumerator(); //parentNode.Pointer.Reset(); parentNode.LoadingChildren = parentNode.Pointer.MoveNext(); } while (count < batchCount && parentNode.LoadingChildren) { var current = parentNode.Pointer.Current; var node = CreateCollectionNode(parentNode, current.GetType()); if (node != null) { node.Initialize(new NullPropertyDescriptor(parentNode.Text), parentNode, parentNode.Pointer.Current, parentNode.TotalCount); if (RunIncludeRules(node)) { node.Setup(parentNode); list.Add(node); } } parentNode.LoadingChildren = parentNode.Pointer.MoveNext(); count++; parentNode.TotalCount++; } if (parentNode.TotalCount <= batchCount) { // There are a low number of nodes, therefore sort nodes by Text. return list.OrderBy(p => p.Text); } // Just add the elements without any sort, because of the high number of nodes. return list; }
public IEnumerable <ISPNode> LoadCollectionChildren(ISPNodeCollection parentNode) { int batchCount = SPExplorerSettings.Current.BatchNodeLoad; var list = new List <ISPNode>(); int count = 0; if (parentNode.Pointer == null) { parentNode.ClearChildren(); parentNode.TotalCount = 0; var collection = (IEnumerable)parentNode.SPObject; parentNode.Pointer = collection.GetEnumerator(); //_pointer.Reset(); parentNode.MoveNext = parentNode.Pointer.MoveNext(); } while (count <= batchCount && parentNode.MoveNext) { Type instanceType = parentNode.Pointer.Current.GetType(); ISPNode node = null; if (parentNode.NodeTypes.ContainsKey(instanceType)) { node = parentNode.NodeTypes[instanceType]; } else { if (parentNode.DefaultNode != null) { node = parentNode.DefaultNode; } } if (node != null) { // Always create a new node, because the object has to be unique for each item in the treeview. var instanceNode = (ISPNode)Activator.CreateInstance(node.GetType()); instanceNode.NodeProvider = parentNode.NodeProvider; instanceNode.SPObject = parentNode.Pointer.Current; instanceNode.Setup(parentNode.SPObject); list.Add(instanceNode); } parentNode.MoveNext = parentNode.Pointer.MoveNext(); count++; parentNode.TotalCount++; } // If there is more nodes in the collection, add a "More" item. if (count >= batchCount && parentNode.MoveNext) { var node = new MoreNode(parentNode); node.Setup(parentNode.SPObject); list.Add(node); } if (parentNode.TotalCount <= batchCount) { // There are a low number of nodes, therefore sort nodes by Text. return(list.OrderBy(p => p.Text)); } // Just add the elements without any sort, because of the high number of nodes. return(list); }