private static void OnColumnReordering(object sender, ColumnReorderingEventArgs e) { FixedCellPanel panel = sender as FixedCellPanel; if (panel == null) { return; } DataGridContext dataGridContext = DataGridControl.GetDataGridContext(panel); if (dataGridContext == null) { return; } TableViewColumnVirtualizationManager columnVirtualizationManager = dataGridContext.ColumnVirtualizationManager as TableViewColumnVirtualizationManager; if (columnVirtualizationManager == null) { return; } int currentFixedColumnCount = columnVirtualizationManager.FixedColumnCount; // We must be sure the VisiblePosition is converted to visible index since some Columns can be Visible = false int oldVisiblePosition = FixedCellPanel.CalculateVisibleIndex(e.OldVisiblePosition, dataGridContext); int newVisiblePosition = FixedCellPanel.CalculateVisibleIndex(e.NewVisiblePosition, dataGridContext); if ((oldVisiblePosition < columnVirtualizationManager.FixedColumnCount) && (newVisiblePosition >= columnVirtualizationManager.FixedColumnCount)) { // A column was moved from the fixedPanel to the scrollingPanel // Do not increment version, it will be done by the FixedColumnCount changed TableView.SetFixedColumnCount(columnVirtualizationManager.DataGridContext, columnVirtualizationManager.FixedColumnCount - 1); } else if ((oldVisiblePosition >= columnVirtualizationManager.FixedColumnCount) && (newVisiblePosition < columnVirtualizationManager.FixedColumnCount)) { // A column was moved from the scrollingPanel to the fixedPanel // Do not increment version, it will be done by the FixedColumnCount changed TableView.SetFixedColumnCount(columnVirtualizationManager.DataGridContext, columnVirtualizationManager.FixedColumnCount + 1); } else { columnVirtualizationManager.IncrementVersion(new UpdateMeasureRequiredEventArgs(UpdateMeasureTriggeredAction.ColumnReordering)); } // This must be done to stop progation of the event even // if only 1 ColumnManagerCell will raise it. e.Handled = true; }
private static void OnColumnReordering( object sender, ColumnReorderingEventArgs e ) { FixedCellPanel panel = sender as FixedCellPanel; if( panel == null ) return; DataGridContext dataGridContext = DataGridControl.GetDataGridContext( panel ); if( dataGridContext == null ) return; TableViewColumnVirtualizationManager columnVirtualizationManager = dataGridContext.ColumnVirtualizationManager as TableViewColumnVirtualizationManager; if( columnVirtualizationManager == null ) return; int currentFixedColumnCount = columnVirtualizationManager.FixedColumnCount; // We must be sure the VisiblePosition is converted to visible index since some Columns can be Visible = false int oldVisiblePosition = FixedCellPanel.CalculateVisibleIndex( e.OldVisiblePosition, dataGridContext ); int newVisiblePosition = FixedCellPanel.CalculateVisibleIndex( e.NewVisiblePosition, dataGridContext ); if( ( oldVisiblePosition < columnVirtualizationManager.FixedColumnCount ) && ( newVisiblePosition >= columnVirtualizationManager.FixedColumnCount ) ) { // A column was moved from the fixedPanel to the scrollingPanel // Do not increment version, it will be done by the FixedColumnCount changed TableView.SetFixedColumnCount( columnVirtualizationManager.DataGridContext, columnVirtualizationManager.FixedColumnCount - 1 ); } else if( ( oldVisiblePosition >= columnVirtualizationManager.FixedColumnCount ) && ( newVisiblePosition < columnVirtualizationManager.FixedColumnCount ) ) { // A column was moved from the scrollingPanel to the fixedPanel // Do not increment version, it will be done by the FixedColumnCount changed TableView.SetFixedColumnCount( columnVirtualizationManager.DataGridContext, columnVirtualizationManager.FixedColumnCount + 1 ); } else { columnVirtualizationManager.IncrementVersion( new UpdateMeasureRequiredEventArgs( UpdateMeasureTriggeredAction.ColumnReordering ) ); } // This must be done to stop progation of the event even // if only 1 ColumnManagerCell will raise it. e.Handled = true; }