internal void InvalidatePinnedRows() { this.ViewElement.TopPinnedRows.DisposeChildren(); this.ViewElement.BottomPinnedRows.DisposeChildren(); if (this.ViewInfo.ShowHeaderRow) { this.ViewElement.TopPinnedRows.Children.Add((RadElement)this.RowScroller.ElementProvider.GetElement(-1, (object)null)); } if (this.ViewInfo.ShowNewRow) { this.ViewElement.TopPinnedRows.Children.Add((RadElement)this.RowScroller.ElementProvider.GetElement(-2, (object)null)); } if (this.ViewInfo.ShowFilterRow) { this.ViewElement.TopPinnedRows.Children.Add((RadElement)this.RowScroller.ElementProvider.GetElement(-3, (object)null)); } foreach (int topPinnedItem in this.RowsViewState.TopPinnedItems) { VirtualGridRowElement element = (VirtualGridRowElement)this.RowScroller.ElementProvider.GetElement(topPinnedItem, (object)null); this.ViewElement.TopPinnedRows.Children.Add((RadElement)element); element.Attach(topPinnedItem, (object)null); } foreach (int bottomPinnedItem in this.RowsViewState.BottomPinnedItems) { VirtualGridRowElement element = (VirtualGridRowElement)this.RowScroller.ElementProvider.GetElement(bottomPinnedItem, (object)null); this.ViewElement.BottomPinnedRows.Children.Add((RadElement)element); element.Attach(bottomPinnedItem, (object)null); } }
protected override SizeF MeasureElementCore(RadElement element, SizeF availableSize) { VirtualGridRowElement virtualGridRowElement = element as VirtualGridRowElement; if (virtualGridRowElement == null || !virtualGridRowElement.IsChildViewVisible) { return(base.MeasureElementCore(element, availableSize)); } SizeF elementSize = this.ElementProvider.GetElementSize(virtualGridRowElement.Data); if (this.Orientation == Orientation.Vertical) { if ((double)elementSize.Height > 0.0) { availableSize.Height = Math.Min(elementSize.Height, availableSize.Height + 100f); } if (!this.FitElementsToSize) { availableSize.Width = float.PositiveInfinity; } } else { availableSize.Width = Math.Min(elementSize.Width, availableSize.Width); if (!this.FitElementsToSize) { availableSize.Height = float.PositiveInfinity; } } element.Measure(availableSize); return(element.DesiredSize); }
public VirtualGridRowPaintEventArgs( VirtualGridRowElement rowElement, VirtualGridViewInfo viewInfo, Graphics graphics) : base(rowElement, viewInfo) { this.graphics = graphics; }
public bool CacheElement(IVirtualizedElement <int> element) { VirtualGridRowElement virtualGridRowElement = element as VirtualGridRowElement; if (virtualGridRowElement == null || virtualGridRowElement.IsDisposed || (virtualGridRowElement.IsDisposing || this.cachedRows.Contains(virtualGridRowElement))) { return(false); } this.cachedRows.Add(virtualGridRowElement); return(true); }
protected internal virtual void Attach(int data, object context, bool synchronize) { this.columnIndex = data; this.rowIndex = (context as VirtualGridRowElement).RowIndex; this.rowElement = context as VirtualGridRowElement; if (synchronize) { this.Synchronize(); } this.rowElement.PropertyChanged += new PropertyChangedEventHandler(this.rowElement_PropertyChanged); }
public virtual bool IsCompatible(int data, object context) { VirtualGridRowElement virtualGridRowElement = context as VirtualGridRowElement; if (data < 0 || this.ViewInfo.IsCustomColumn(data)) { return(false); } if (virtualGridRowElement != null) { return(virtualGridRowElement.RowIndex >= 0); } return(true); }
private float GetParentRowOffset() { float num1 = 0.0f; RadElement parent = this.Parent; int rowIndex = this.rowIndex; while (parent != null) { ScrollableVirtualRowsContainer virtualRowsContainer = parent as ScrollableVirtualRowsContainer; VirtualGridRowElement virtualGridRowElement = parent as VirtualGridRowElement; if (virtualRowsContainer != null) { int num2 = -1; IEnumerator enumerator = ((IEnumerable)virtualRowsContainer.TableElement.RowScroller).GetEnumerator(); try { if (enumerator.MoveNext()) { num2 = (int)enumerator.Current; } } finally { (enumerator as IDisposable)?.Dispose(); } if (num2 != -1) { num1 += virtualRowsContainer.ScrollOffset.Height + (float)virtualRowsContainer.TableElement.RowScroller.GetItemOffset(rowIndex) - (float)virtualRowsContainer.TableElement.RowScroller.GetItemOffset(num2) + (float)virtualRowsContainer.TableElement.RowsViewState.GetItemSize(rowIndex, true, false) + virtualRowsContainer.TableElement.ViewElement.TopPinnedRows.DesiredSize.Height; } else { continue; } } if (virtualGridRowElement != null) { rowIndex = virtualGridRowElement.rowIndex; } parent = parent.Parent; } return(num1); }
protected override IVirtualizedElement <int> UpdateElement( int position, int data) { if (this.tableElement == null) { return(base.UpdateElement(position, data)); } object elementContext = this.GetElementContext(); if (position < this.Children.Count) { IVirtualizedElement <int> element = (IVirtualizedElement <int>) this.Children[position]; if (this.ElementProvider.ShouldUpdate(element, data, elementContext)) { if (this.tableElement.IsRowExpanded(data)) { for (int indexFrom = position; indexFrom < this.Children.Count; ++indexFrom) { VirtualGridRowElement child = this.Children[indexFrom] as VirtualGridRowElement; if (child != null && child.IsChildViewInitialized && child.IsCompatible(data, elementContext)) { child.Detach(); child.Attach(data, elementContext); if (indexFrom != position) { this.Children.Move(indexFrom, position); } return((IVirtualizedElement <int>)child); } } if ((this.ElementProvider as VirtualRowsElementProvider).TryGetElementWithChildView(data, elementContext, out element)) { this.Children.Insert(position, (RadElement)element); return(element); } } else { for (int indexFrom = position; indexFrom < this.Children.Count; ++indexFrom) { VirtualGridRowElement child = this.Children[indexFrom] as VirtualGridRowElement; if (child != null && !child.IsChildViewInitialized) { child.Detach(); child.Attach(data, elementContext); if (indexFrom != position) { this.Children.Move(indexFrom, position); } return((IVirtualizedElement <int>)child); } } if ((this.ElementProvider as VirtualRowsElementProvider).TryGetElementWithoutChildView(data, elementContext, out element)) { this.Children.Insert(position, (RadElement)element); return(element); } } } } return(base.UpdateElement(position, data)); }
public virtual void Synchronize(VirtualGridRowElement context) { this.rowIndex = context.RowIndex; this.rowElement = context; this.Synchronize(); }
public virtual void Detach() { this.columnIndex = int.MinValue; this.rowElement.PropertyChanged -= new PropertyChangedEventHandler(this.rowElement_PropertyChanged); this.rowElement = (VirtualGridRowElement)null; }