Exemplo n.º 1
0
        protected virtual bool TryEnsureRowVisibilityByTraverser(
            GridViewRowInfo rowInfo,
            bool isLastRow,
            RadScrollBarElement verticalScrollBar,
            ScrollableRowsContainerElement scrollableRows,
            out GridRowElement row,
            out bool isTraverserd)
        {
            int num = verticalScrollBar.Maximum - verticalScrollBar.LargeChange + 1;

            if (isLastRow && num != verticalScrollBar.Value)
            {
                this.ChangeScrollbarValue(verticalScrollBar, num);
                this.UpdateLayout();
            }
            row          = this.GetRowElement(rowInfo);
            isTraverserd = false;
            if (row != null)
            {
                return(false);
            }
            int height = (int)this.RowScroller.ElementProvider.GetElementSize(rowInfo).Height;

            this.EnsureScrollingDelta(rowInfo, isLastRow, ref height);
            if (this.UseScrollbarsInHierarchy && scrollableRows.Children.Count > 0)
            {
                GridDetailViewRowElement child = scrollableRows.Children[scrollableRows.Children.Count - 1] as GridDetailViewRowElement;
                height += child != null ? child.RowInfo.Height - child.Size.Height : 0;
            }
            isTraverserd = this.EnsureRowVisibleByTraverser(verticalScrollBar, rowInfo, (float)height);
            return(true);
        }
Exemplo n.º 2
0
 protected GridDetailViewRowElement GetDetailViewRowElement()
 {
     for (RadElement radElement = (RadElement)this.TableElement; radElement != null; radElement = radElement.Parent)
     {
         GridDetailViewRowElement detailViewRowElement = radElement as GridDetailViewRowElement;
         if (detailViewRowElement != null)
         {
             return(detailViewRowElement);
         }
     }
     return((GridDetailViewRowElement)null);
 }
        private void CorrectScrollbarRangeInHierarchy()
        {
            GridTableElement       tableElement    = ((RowsContainerElement)this.Parent).TableElement;
            RadGridViewElement     gridViewElement = tableElement.GridViewElement;
            RadScrollBarElement    vscrollBar      = tableElement.VScrollBar;
            MasterGridViewTemplate masterTemplate  = tableElement.MasterTemplate;

            if (masterTemplate == null || masterTemplate.Templates.Count == 0 || (gridViewElement.UseScrollbarsInHierarchy || tableElement.ViewInfo.ParentRow != null) || (this.Children.Count == 0 || vscrollBar.Value < vscrollBar.Maximum - vscrollBar.LargeChange + 1))
            {
                return;
            }
            GridDetailViewRowElement child1 = this.Children[this.Children.Count - 1] as GridDetailViewRowElement;

            if (child1 == null || child1.ContentCell.ChildTableElement.ViewInfo == null)
            {
                return;
            }
            ScrollableRowsContainerElement scrollableRows = child1.ContentCell.ChildTableElement.ViewElement.ScrollableRows;
            int           count         = scrollableRows.Children.Count;
            GridTraverser gridTraverser = new GridTraverser(child1.ContentCell.ChildTableElement.ViewInfo);

            gridTraverser.TraversalMode = GridTraverser.TraversalModes.ScrollableRows;
            int num1 = 0;

            while (gridTraverser.MoveNext())
            {
                ++num1;
                if (num1 > count)
                {
                    int height = (int)child1.ContentCell.ChildTableElement.RowElementProvider.GetElementSize(gridTraverser.Current).Height;
                    tableElement.RowScroller.UpdateScrollRange(vscrollBar.Maximum + height, false);
                    return;
                }
            }
            if (scrollableRows.Children.Count <= 0)
            {
                return;
            }
            GridRowElement child2 = (GridRowElement)scrollableRows.Children[scrollableRows.Children.Count - 1];

            if (child2.ControlBoundingRectangle.Bottom <= scrollableRows.ControlBoundingRectangle.Bottom)
            {
                return;
            }
            int num2 = child2.ControlBoundingRectangle.Bottom - scrollableRows.ControlBoundingRectangle.Bottom;

            tableElement.RowScroller.UpdateScrollRange(vscrollBar.Maximum + num2, false);
        }