protected virtual float[] MeasureCells( GridViewRowInfo row, List <GridViewDataColumn> columns, float[] widths) { IVirtualizedElementProvider <GridViewColumn> elementProvider1 = this.tableElement.ColumnScroller.ElementProvider; IVirtualizedElementProvider <GridViewRowInfo> elementProvider2 = this.tableElement.RowScroller.ElementProvider; if (this.CanBestFitRow(row)) { GridRowElement element1 = elementProvider2.GetElement(row, (object)null) as GridRowElement; element1.InitializeRowView(this.TableElement); this.TableElement.Children.Add((RadElement)element1); element1.Initialize(row); for (int index = 0; index < columns.Count; ++index) { if (columns[index].IsVisible && columns[index].AutoSizeMode != BestFitColumnMode.None) { GridCellElement element2 = elementProvider1.GetElement((GridViewColumn)columns[index], (object)element1) as GridCellElement; element1.Children.Add((RadElement)element2); element2.Initialize((GridViewColumn)columns[index], element1); element2.SetContent(); element2.UpdateInfo(); (element2 as GridHeaderCellElement)?.UpdateArrowState(); element2.ResetLayout(true); widths[index] = Math.Max(widths[index], this.GetCellDesiredWidth(element2)); element1.Children.Remove((RadElement)element2); this.Detach(elementProvider1, element2); } } this.TableElement.Children.Remove((RadElement)element1); this.Detach(elementProvider2, element1); } return(widths); }
protected override void CreateChildElements() { this.elementProvider = this.CreateElementProvider(); this.scroller = this.CreateItemScroller(); base.CreateChildElements(); this.InitializeItemScroller(this.scroller); this.HScrollBar.Maximum = 0; this.WireEvents(); }
protected virtual float CalculateColumnWidth( ListViewDetailColumn column, ListViewBestFitColumnMode mode) { IVirtualizedElementProvider <ListViewDataItem> elementProvider = this.DetailListView.Scroller.ElementProvider; float val1 = 0.0f; if (mode == ListViewBestFitColumnMode.HeaderCells || mode == ListViewBestFitColumnMode.AllCells) { DetailListViewHeaderCellElement element = this.DetailListView.ColumnScroller.ElementProvider.GetElement(column, (object)null) as DetailListViewHeaderCellElement; this.DetailListView.ColumnContainer.Children.Add((RadElement)element); element.Attach(column, (object)null); element.ResetLayout(true); val1 = Math.Max(val1, this.GetCellDesiredWidth((DetailListViewCellElement)element)); this.DetailListView.ColumnContainer.Children.Remove((RadElement)element); this.Detach(this.DetailListView.ColumnScroller.ElementProvider, (DetailListViewCellElement)element); if (mode == ListViewBestFitColumnMode.HeaderCells) { return(val1); } } IEnumerator <ListViewDataItem> enumerator = (IEnumerator <ListViewDataItem>)null; if (mode == ListViewBestFitColumnMode.DataCells || mode == ListViewBestFitColumnMode.AllCells) { enumerator = (IEnumerator <ListViewDataItem>) new ListViewTraverser(this.DetailListView.Owner); } enumerator.Reset(); while (enumerator.MoveNext()) { ListViewDataItem current = enumerator.Current; if (this.CanBestFitItem(current)) { DetailListViewVisualItem element1 = elementProvider.GetElement(current, (object)null) as DetailListViewVisualItem; element1.Attach(current, (object)null); this.DetailListView.ColumnContainer.Children.Add((RadElement)element1); IVirtualizedElementProvider <ListViewDetailColumn> cellElementProvider = (IVirtualizedElementProvider <ListViewDetailColumn>) new DetailListViewDataCellElementProvider(element1); DetailListViewCellElement element2 = cellElementProvider.GetElement(column, (object)element1) as DetailListViewCellElement; element1.Children.Add((RadElement)element2); element2.Attach(column, (object)element1); element2.ResetLayout(true); val1 = Math.Max(val1, this.GetCellDesiredWidth(element2)); element1.Children.Remove((RadElement)element2); this.DetailListView.ColumnContainer.Children.Remove((RadElement)element1); this.Detach(cellElementProvider, element2); this.Detach(elementProvider, element1); } } return(val1); }
protected internal virtual int GetDataRowHeight( GridViewRowInfo row, TableViewRowLayoutBase rowLayout) { if (!this.GridView.AutoSizeRows) { return(rowLayout.GetRowHeight(row)); } IVirtualizedElementProvider <GridViewColumn> elementProvider1 = this.GridView.TableElement.ColumnScroller.ElementProvider; IVirtualizedElementProvider <GridViewRowInfo> elementProvider2 = this.GridView.TableElement.RowScroller.ElementProvider; float val1 = 0.0f; GridRowElement element1 = elementProvider2.GetElement(row, (object)null) as GridRowElement; element1.InitializeRowView(this.GridView.TableElement); element1.Initialize(row); this.GridView.TableElement.Children.Add((RadElement)element1); if (row is GridViewGroupRowInfo) { GridGroupHeaderRowElement headerRowElement = element1 as GridGroupHeaderRowElement; headerRowElement.Measure(new SizeF(rowLayout.DesiredSize.Width, float.PositiveInfinity)); val1 = Math.Max(val1, headerRowElement.DesiredSize.Height); } else { foreach (GridViewColumn column in (Collection <GridViewDataColumn>)row.ViewTemplate.Columns) { if (!(column is GridViewRowHeaderColumn) && !(column is GridViewIndentColumn) && column.IsVisible) { GridCellElement element2 = elementProvider1.GetElement(column, (object)element1) as GridCellElement; element1.Children.Add((RadElement)element2); element2.Initialize(column, element1); element2.SetContent(); element2.UpdateInfo(); (element2 as GridHeaderCellElement)?.UpdateArrowState(); element2.ResetLayout(true); val1 = Math.Max(val1, this.GetCellDesiredSize(element2).Height); element1.Children.Remove((RadElement)element2); this.Detach(elementProvider1, element2); } } } this.GridView.TableElement.Children.Remove((RadElement)element1); this.Detach(elementProvider2, element1); return((int)val1); }
private void Detach( IVirtualizedElementProvider <ListViewDataItem> itemElementProvider, DetailListViewVisualItem item) { if (item != null) { itemElementProvider.CacheElement((IVirtualizedElement <ListViewDataItem>)item); item.Detach(); if (item.Parent == null || !item.Parent.Children.Contains((RadElement)item)) { return; } item.Parent.Children.Remove((RadElement)item); } else { item.Dispose(); } }
private void Detach( IVirtualizedElementProvider <ListViewDetailColumn> cellElementProvider, DetailListViewCellElement cell) { if (cell != null) { cellElementProvider.CacheElement((IVirtualizedElement <ListViewDetailColumn>)cell); cell.Detach(); if (cell.Parent == null || !cell.Parent.Children.Contains((RadElement)cell)) { return; } cell.Parent.Children.Remove((RadElement)cell); } else { cell.Dispose(); } }
private void BestFitGroupColumn( GridViewGroupColumn column, bool bestFitChildColumns, BestFitColumnMode?mode) { GridTableHeaderRowElement headerRowElement = this.GetHeaderRowElement(); IVirtualizedElementProvider <GridViewColumn> elementProvider = this.tableElement.ColumnScroller.ElementProvider; ColumnGroupRowLayout rowLayout = this.tableElement.ViewElement.RowLayout as ColumnGroupRowLayout; if (rowLayout == null || headerRowElement == null) { return; } GridColumnGroupCellElement element = elementProvider.GetElement((GridViewColumn)column, (object)headerRowElement) as GridColumnGroupCellElement; if (element == null || !element.CanBestFit(column.AutoSizeMode)) { return; } float num = this.MeasureCell((GridRowElement)headerRowElement, (GridViewColumn)column, element); this.Detach(elementProvider, (GridCellElement)element); ColumnGroupsCellArrangeInfo columnData = rowLayout.GetColumnData((GridViewColumn)column); if ((double)columnData.Bounds.Width < (double)num) { rowLayout.StartColumnResize((GridViewColumn)column); rowLayout.ResizeColumn((int)((double)num - (double)columnData.Bounds.Width)); rowLayout.InvalidateLayout(); this.TableElement.ViewElement.InvalidateMeasure(true); this.TableElement.ViewElement.UpdateLayout(); rowLayout.EndColumnResize(); } if (!bestFitChildColumns) { return; } foreach (GridViewColumn dataColumn in this.GetDataColumns(column.Group)) { this.BestFitColumnCore(dataColumn, mode.HasValue ? mode.Value : column.AutoSizeMode); } }
private void Detach( IVirtualizedElementProvider <GridViewRowInfo> rowElementProvider, GridRowElement row) { GridVirtualizedRowElement virtualizedRowElement = row as GridVirtualizedRowElement; if (virtualizedRowElement != null) { rowElementProvider.CacheElement((IVirtualizedElement <GridViewRowInfo>)virtualizedRowElement); virtualizedRowElement.Detach(); if (virtualizedRowElement.Parent == null || !virtualizedRowElement.Parent.Children.Contains((RadElement)virtualizedRowElement)) { return; } virtualizedRowElement.Parent.Children.Remove((RadElement)virtualizedRowElement); } else { row.Dispose(); } }
private void Detach( IVirtualizedElementProvider <GridViewColumn> cellElementProvider, GridCellElement cell) { GridVirtualizedCellElement virtualizedCellElement = cell as GridVirtualizedCellElement; if (virtualizedCellElement != null) { cellElementProvider.CacheElement((IVirtualizedElement <GridViewColumn>)virtualizedCellElement); virtualizedCellElement.Detach(); if (virtualizedCellElement.Parent == null || !virtualizedCellElement.Parent.Children.Contains((RadElement)virtualizedCellElement)) { return; } virtualizedCellElement.Parent.Children.Remove((RadElement)virtualizedCellElement); } else { cell.Dispose(); } }
protected virtual float MeasureCell( GridViewRowInfo row, GridViewColumn column, BestFitColumnMode mode) { float val1 = 0.0f; IVirtualizedElementProvider <GridViewColumn> elementProvider1 = this.tableElement.ColumnScroller.ElementProvider; IVirtualizedElementProvider <GridViewRowInfo> elementProvider2 = this.tableElement.RowScroller.ElementProvider; if (this.CanBestFitRow(row)) { GridRowElement element1 = elementProvider2.GetElement(row, (object)null) as GridRowElement; element1.InitializeRowView(this.TableElement); this.TableElement.Children.Add((RadElement)element1); element1.Initialize(row); GridCellElement element2 = elementProvider1.GetElement(column, (object)element1) as GridCellElement; if (!element2.CanBestFit(mode)) { this.Detach(elementProvider1, element2); this.Detach(elementProvider2, element1); return(val1); } element1.Children.Add((RadElement)element2); element2.Initialize(column, element1); element2.SetContent(); element2.UpdateInfo(); (element2 as GridHeaderCellElement)?.UpdateArrowState(); element2.ResetLayout(true); val1 = Math.Max(val1, this.GetCellDesiredWidth(element2)); element1.Children.Remove((RadElement)element2); this.TableElement.Children.Remove((RadElement)element1); this.Detach(elementProvider1, element2); this.Detach(elementProvider2, element1); } return(val1); }