¿Cómo puedo suspender que un .NET DataGridView muestre algo mientras actualizo sus Columnas?Cómo suspender un DataGridView mientras actualiza sus columnas
Aquí está mi código actual. Funciona bien, pero es muy lento en el ciclo foreach; puede ver que la barra de desplazamiento horiz crece lentamente a medida que se agrega cada columna. Estoy construyendo las columnas de la interfaz de usuario yo mismo, ya que no quiero usar dataGridView1.AutoGenerateColumns por varias razones.
// Disconnect and reset DataGridView
dataGridView1.DataSource = null;
dataGridView1.SuspendLayout();
dataGridView1.Columns.Clear();
// Get data from SQL
DataTable dt = new DataTable();
SqlDataAdapter adapter = new SqlDataAdapter("select * from employeehist", conn);
adapter.Fill(dt);
// Build DataGridView columns
foreach (DataColumn c in dt.Columns)
{
DataGridViewTextBoxColumn col = new DataGridViewTextBoxColumn();
col.SortMode = DataGridViewColumnSortMode.NotSortable;
col.DataPropertyName = c.ColumnName;
col.HeaderText = c.Caption;
dataGridView1.Columns.Add(col);
}
// Reconnect DataGridView
dataGridView1.DataSource = dt;
dataGridView1.ResumeLayout(true);
Hmm. Eso debería hacerlo ... Intenta colocar 'dataGridView1.DataSource = null' después de la llamada SuspendLayout? ¿Esperas que las columnas cambien entre dos solicitudes? De lo contrario, es posible que desee eliminar por completo la creación de columna de este método. –
Sí, el recuento de columnas puede cambiar. El conjunto de resultados consultados puede variar según el rango de fechas que el usuario seleccione. Además, traté de mover el '= null' y no ayudó. Sin embargo, gracias, – Lane
@Lane, tengo el mismo problema, pero no la vista de la cuadrícula de datos. Estoy usando GridView para enlazar datos, y durante el ciclo, es extremadamente lento, y GridView no tiene la función Columns.AddRange ... ¿se pregunta por qué y cómo lo solucionó para su caso? Gracias. – Princa