private bool EnsureRowVisibleByTraverserDown( RadScrollBarElement vScrollBar, GridViewRowInfo rowInfo, ScrollableRowsContainerElement rows, float delta) { GridRowElement child = (GridRowElement)rows.Children[rows.Children.Count - 1]; GridTraverser enumerator = (GridTraverser)((IEnumerable)this.RowScroller).GetEnumerator(); while (enumerator.Current is GridViewDetailsRowInfo) { enumerator.MoveNext(); } enumerator.MovePrevious(); if (enumerator.Current == rowInfo) { return(this.ChangeScrollbarValue(vScrollBar, vScrollBar.Value - (int)delta)); } do { ; }while (enumerator.MoveNext() && enumerator.Current != child.RowInfo); enumerator.MoveNext(); if (enumerator.Current == rowInfo) { return(this.ChangeScrollbarValue(vScrollBar, vScrollBar.Value + (int)delta)); } return(false); }
internal static GridViewRowInfo NavigateAfterRemove( GridViewRowInfo startFrom, List <GridViewRowInfo> notAllowedRows) { GridViewRowInfo row = startFrom; GridTraverser gridTraverser = new GridTraverser(row.ViewInfo); gridTraverser.GoToRow(row); GridTraverser.GridTraverserPosition position = gridTraverser.Position; GridViewRowInfo newCurrentRowInfo = GridViewRowCollection.ChangeTheChildViewAfterRemove(startFrom); if (newCurrentRowInfo != null) { return(newCurrentRowInfo); } while (gridTraverser.MoveNext()) { if (gridTraverser.Current.CanBeCurrent && (notAllowedRows == null || !notAllowedRows.Contains(gridTraverser.Current))) { if (gridTraverser.Current is GridViewGroupRowInfo) { if (!gridTraverser.Current.IsExpanded) { gridTraverser.Current.IsExpanded = true; } } else { if (gridTraverser.Current is GridViewDataRowInfo || gridTraverser.Current is GridViewNewRowInfo) { newCurrentRowInfo = gridTraverser.Current; break; } break; } } } if (newCurrentRowInfo == null) { gridTraverser.Position = position; gridTraverser.ProcessHierarchy = true; while (gridTraverser.MovePrevious()) { if (gridTraverser.Current.CanBeCurrent && (notAllowedRows == null || !notAllowedRows.Contains(gridTraverser.Current))) { if (gridTraverser.Current is GridViewGroupRowInfo) { if (!gridTraverser.Current.IsExpanded) { gridTraverser.Current.IsExpanded = true; gridTraverser.Position = position; } } else { if (gridTraverser.Current is GridViewDataRowInfo || gridTraverser.Current is GridViewNewRowInfo) { newCurrentRowInfo = gridTraverser.Current; break; } position = gridTraverser.Position; } } } } if (newCurrentRowInfo == null) { return((GridViewRowInfo)null); } if (GridViewRowCollection.HasDeletedParentRow(newCurrentRowInfo, notAllowedRows)) { newCurrentRowInfo = GridViewRowCollection.NavigateAfterRemove(newCurrentRowInfo.Parent as GridViewRowInfo, notAllowedRows); } return(newCurrentRowInfo); }