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); }
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); }