private void CleanDetailNode( DetailGeneratorNode detailNode ) { #if LOG Log.Start( this, "CleanDetailNode - DN" + detailNode.GetHashCode().ToString() ); #endif m_dataGridControl.SelectionChangerManager.Begin(); try { m_dataGridControl.SelectionChangerManager.UnselectAllItems( detailNode.DetailContext ); m_dataGridControl.SelectionChangerManager.UnselectAllCells( detailNode.DetailContext ); } finally { m_dataGridControl.SelectionChangerManager.End( false, false, false ); } m_dataGridControl.SaveDataGridContextState( detailNode.DetailContext, true, int.MaxValue ); CustomItemContainerGenerator generator = detailNode.DetailGenerator; detailNode.CleanGeneratorNode(); DetailsChangedEventManager.RemoveListener( generator, this ); generator.ItemsChanged -= HandleDetailGeneratorContentChanged; generator.ContainersRemoved -= OnDetailContainersRemoved; generator.SetGenPosToIndexUpdateInhibiter( null ); #if LOG Log.End( this, "CleanDetailNode - DN" + detailNode.GetHashCode().ToString() ); #endif }