Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }