public virtual object Evaluate(IHierarchicalRow row) { string summaryExpression = this.GetSummaryExpression(); if (string.IsNullOrEmpty(summaryExpression)) { return((object)null); } object obj = (object)null; GridViewGroupRowInfo viewGroupRowInfo = row as GridViewGroupRowInfo; if (viewGroupRowInfo != null) { return(viewGroupRowInfo.Group.Evaluate(summaryExpression)); } GridViewHierarchyRowInfo hierarchyRowInfo = row as GridViewHierarchyRowInfo; if (hierarchyRowInfo != null) { return(hierarchyRowInfo.ActiveView.Evaluate(summaryExpression, (IEnumerable <GridViewRowInfo>)hierarchyRowInfo.ActiveView.ChildRows)); } GridViewTemplate gridViewTemplate = row as GridViewTemplate; if (gridViewTemplate != null) { return(gridViewTemplate.DataView.Evaluate(summaryExpression, 0, gridViewTemplate.DataView.Count)); } return(obj); }
public GridTraverser(GridTraverser gridTraverser) { this.rootRow = gridTraverser.hierarchyRow; this.hierarchyRow = gridTraverser.hierarchyRow; this.mode = gridTraverser.mode; this.overDetailsRow = gridTraverser.overDetailsRow; if (gridTraverser.traverser is ViewInfoTraverser) { this.traverser = (ITraverser <GridViewRowInfo>) new ViewInfoTraverser((ViewInfoTraverser.ViewInfoEnumeratorPosition)gridTraverser.traverser.Position); } else { if (!(gridTraverser.traverser is HierarchyRowTraverser)) { return; } if (this.hierarchyRow is GridViewGroupRowInfo) { this.traverser = (ITraverser <GridViewRowInfo>) new GroupRowTraverser((HierarchyRowTraverser.HierarchyRowTraverserPosition)gridTraverser.traverser.Position); } else { this.traverser = (ITraverser <GridViewRowInfo>) new HierarchyRowTraverser((HierarchyRowTraverser.HierarchyRowTraverserPosition)gridTraverser.traverser.Position); } } }
protected virtual bool IsLastChildRow(IHierarchicalRow parent, GridViewRowInfo row) { ITraverser <GridViewRowInfo> traverser = this.GetTraverser(parent); traverser.MoveToEnd(); return(traverser.Current == row); }
public GridTraverser(GridViewInfo viewInfo, GridTraverser.TraversalModes type) { this.mode = type; this.hierarchyRow = viewInfo.ParentRow == null ? (IHierarchicalRow)viewInfo.ViewTemplate : (IHierarchicalRow)viewInfo.ParentRow; this.rootRow = this.hierarchyRow; this.viewInfo = viewInfo; this.Reset(); }
public T FindParent <T>() where T : IHierarchicalRow { for (IHierarchicalRow parent = this.Parent; parent != null; parent = parent.Parent) { if (parent is T) { return((T)parent); } } return(default(T)); }
protected ITraverser <GridViewRowInfo> GetTraverser( IHierarchicalRow hierarchicalRow) { GridViewRowInfo hierarchyRow = hierarchicalRow as GridViewRowInfo; if (hierarchyRow != null) { return((ITraverser <GridViewRowInfo>) new HierarchyRowTraverser(hierarchyRow)); } return((ITraverser <GridViewRowInfo>) new GridTraverser(hierarchicalRow)); }
public GridTraverserPosition( IHierarchicalRow rootRow, IHierarchicalRow hierarchyRow, object position, bool overDetailsRow, GridTraverser.TraversalModes mode) { this.rootRow = rootRow; this.hierarchyRow = hierarchyRow; this.position = position; this.overDetailsRow = overDetailsRow; this.mode = mode; }
public GroupSummaryEvaluationEventArgs( object value, DataGroup group, string formatString, GridViewSummaryItem summaryItem, IHierarchicalRow parent, object context) { this.formatString = formatString; this.group = group; this.value = value; this.summaryItem = summaryItem; this.parent = parent; this.context = context; }
private void StepInHierarchyBackward() { while (this.CanStepInHierarchy()) { GridViewHierarchyRowInfo current = this.traverser.Current as GridViewHierarchyRowInfo; if (current != null && !this.processHierarchy && !this.IsSelfReference(current)) { this.overDetailsRow = true; break; } this.hierarchyRow = (IHierarchicalRow)this.traverser.Current; this.hierarchyTraversers.Push(this.traverser); this.CreateTraverser(); this.traverser.MoveToEnd(); } }
private bool StepOutOfHierarchy() { GridViewHierarchyRowInfo hierarchyRow1 = this.hierarchyRow as GridViewHierarchyRowInfo; if (this.hierarchyRow is GridViewGroupRowInfo || this.hierarchyRow.HasChildViews || this.processHierarchy && (this.hierarchyRow.Parent != null || this.hierarchyRow is GridViewHierarchyRowInfo)) { IHierarchicalRow hierarchyRow2 = this.hierarchyRow; this.oldRowIsGroupRow = hierarchyRow2 is GridViewGroupRowInfo; this.hierarchyRow = this.hierarchyRow.Parent; GridViewInfo gridViewInfo = this.Current != null ? this.Current.ViewInfo : (GridViewInfo)null; bool flag = this.Current is GridViewHierarchyRowInfo; if (this.hierarchyRow == null) { this.hierarchyRow = this.rootRow; } if (this.hierarchyTraversers.Count > 0) { ITraverser <GridViewRowInfo> traverser = this.hierarchyTraversers.Pop(); traverser.MovePrevious(); traverser.MovePrevious(); for (int index = 0; index < 5; ++index) { traverser.MoveNext(); if (traverser.Current == hierarchyRow2) { this.traverser = traverser; return(this.ProcessHierarchy || hierarchyRow1 == null || (hierarchyRow1.ViewTemplate.Templates.Count <= 0 || !hierarchyRow1.ViewTemplate.IsSelfReference) || (gridViewInfo == null || hierarchyRow1.ViewTemplate == gridViewInfo.ViewTemplate) && (flag || hierarchyRow1 != this.rootRow)); } } } this.CreateTraverser(); while (this.traverser.MoveNext()) { if (this.traverser.Current == hierarchyRow2) { return(this.ProcessHierarchy || hierarchyRow1 == null || (hierarchyRow1.ViewTemplate.Templates.Count <= 0 || !hierarchyRow1.ViewTemplate.IsSelfReference) || (gridViewInfo == null || hierarchyRow1.ViewTemplate == gridViewInfo.ViewTemplate) && (flag || hierarchyRow1 != this.rootRow)); } } } return(false); }
private GridViewRowInfo GetNext(GridViewRowInfo row) { IHierarchicalRow current1 = (IHierarchicalRow)row; IHierarchicalRow parent1 = row.Parent ?? (IHierarchicalRow)row.ViewTemplate; Stack <GridViewRowCollection.Navigator> navigatorStack = new Stack <GridViewRowCollection.Navigator>(); GridViewRowCollection.Navigator navigator1 = new GridViewRowCollection.Navigator(parent1, current1); navigatorStack.Push(navigator1); while (navigatorStack.Count > 0) { GridViewRowCollection.Navigator navigator2 = navigatorStack.Pop(); IHierarchicalRow parent2 = navigator2.Parent; IHierarchicalRow current2 = navigator2.Current; if (parent2 == null) { return((GridViewRowInfo)null); } if (parent2.ChildRows.Count > 1) { int num = parent2.ChildRows.IndexOf((GridViewRowInfo)current2); if (num == parent2.ChildRows.Count - 1) { return((GridViewRowInfo)null); } GridViewGroupRowInfo viewGroupRowInfo = parent2.ChildRows[num + 1] as GridViewGroupRowInfo; if (viewGroupRowInfo == null) { return(parent2.ChildRows[num + 1]); } while (viewGroupRowInfo.Group.Groups.Count > 0) { viewGroupRowInfo = viewGroupRowInfo.Group.Groups[0].GroupRow; } return(viewGroupRowInfo.Group[0]); } GridViewRowCollection.Navigator navigator3 = new GridViewRowCollection.Navigator(parent2.Parent, parent2); navigatorStack.Push(navigator3); } return((GridViewRowInfo)null); }
private bool MovePreviousCore() { if (this.position.Index == 0 && this.position.Parent != null && this.position.Parent.Parent != null) { IHierarchicalRow parent = this.position.Parent.Parent; this.position.Index = parent.ChildRows.IndexOf((GridViewRowInfo)this.position.Parent); this.position.Parent = parent; this.current = this.position.Parent.ChildRows[this.position.Index]; return(true); } if (this.position.Index > 0) { --this.position.Index; for (this.current = this.position.Parent.ChildRows[this.position.Index]; this.OnStepInHierarchy(this.current); this.current = this.position.Parent.ChildRows[this.position.Index]) { this.position.Parent = (IHierarchicalRow)this.current; this.position.Index = this.position.Parent.ChildRows.Count - 1; } return(true); } this.position.Index = -1; return(false); }
private bool StepInHierarchy() { if (this.overDetailsRow) { this.overDetailsRow = false; } else if (this.CanStepInHierarchy()) { GridViewHierarchyRowInfo current = this.traverser.Current as GridViewHierarchyRowInfo; if (current != null && !this.processHierarchy && !this.IsSelfReference(current)) { this.overDetailsRow = true; return(true); } if (this.traverser.Current != null) { this.hierarchyRow = (IHierarchicalRow)this.traverser.Current; this.hierarchyTraversers.Push(this.traverser); this.CreateTraverser(); } } return(false); }
private GridViewRowInfo GetPrev(GridViewRowInfo row) { IHierarchicalRow hierarchicalRow1 = (IHierarchicalRow)row; IHierarchicalRow hierarchicalRow2 = row.Parent ?? (IHierarchicalRow)row.ViewTemplate; Stack <IHierarchicalRow> hierarchicalRowStack = new Stack <IHierarchicalRow>(); hierarchicalRowStack.Push(hierarchicalRow2); while (hierarchicalRowStack.Count > 0) { IHierarchicalRow hierarchicalRow3 = hierarchicalRowStack.Pop(); if (hierarchicalRow3 == null) { return((GridViewRowInfo)null); } if (hierarchicalRow3.ChildRows.Count > 1) { int num = hierarchicalRow3.ChildRows.IndexOf((GridViewRowInfo)hierarchicalRow1); if (num == 0) { return((GridViewRowInfo)null); } GridViewGroupRowInfo viewGroupRowInfo = hierarchicalRow3.ChildRows[num - 1] as GridViewGroupRowInfo; if (viewGroupRowInfo == null) { return(hierarchicalRow3.ChildRows[num - 1]); } while (viewGroupRowInfo.Group.Groups.Count > 0) { viewGroupRowInfo = viewGroupRowInfo.Group.Groups[viewGroupRowInfo.Group.Groups.Count - 1].GroupRow; } return(viewGroupRowInfo.Group[viewGroupRowInfo.Group.ItemCount - 1]); } hierarchicalRow1 = hierarchicalRow3; hierarchicalRowStack.Push(hierarchicalRow3.Parent); } return((GridViewRowInfo)null); }
private bool MoveNextCore() { if (this.traverser == null) { return(false); } IHierarchicalRow hierarchyRow = this.hierarchyRow; ITraverser <GridViewRowInfo> traverser = this.traverser; if (this.StepInHierarchy()) { return(true); } while (!this.traverser.MoveNext()) { if (!this.StepOutOfHierarchy()) { this.hierarchyRow = hierarchyRow; this.traverser = traverser; return(false); } } return(true); }
public Navigator(IHierarchicalRow parent, IHierarchicalRow current) { this.Parent = parent; this.Current = current; }
public void Reset() { this.hierarchyRow = this.rootRow; this.hierarchyTraversers.Clear(); this.CreateTraverser(this.viewInfo); }
public EnumeratorPosition( GridViewRowInfoEnumerator.EnumeratorPosition position) { this.parent = position.parent; this.index = position.index; }
public EnumeratorPosition(IHierarchicalRow parent, int index) { this.parent = parent; this.index = index; }
public GridViewRowInfoEnumerator(IHierarchicalRow startPosition) { this.start = startPosition; this.position = new GridViewRowInfoEnumerator.EnumeratorPosition(this.start, -1); }
public GridTraverser(IHierarchicalRow hierarchyRow) { this.rootRow = hierarchyRow; this.hierarchyRow = hierarchyRow; this.Reset(); }