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;
 }
Example #4
0
        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);
        }
Example #5
0
 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);
 }
Example #6
0
        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));
        }
Example #9
0
 public virtual void Synchronize(VirtualGridRowElement context)
 {
     this.rowIndex   = context.RowIndex;
     this.rowElement = context;
     this.Synchronize();
 }
Example #10
0
 public virtual void Detach()
 {
     this.columnIndex = int.MinValue;
     this.rowElement.PropertyChanged -= new PropertyChangedEventHandler(this.rowElement_PropertyChanged);
     this.rowElement = (VirtualGridRowElement)null;
 }