如何在更新列時暫停.NET DataGridView顯示任何內容?如何在更新列時掛起DataGridView
這是我目前的代碼。它工作正常,但在foreach循環中非常慢;您可以看到每增加一列,水平滾動條就會慢慢增長。我自己構建UI列,因爲我不想使用dataGridView1.AutoGenerateColumns出於各種原因。
// 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);
嗯。應該這樣做...嘗試在SuspendLayout調用後放置'dataGridView1.DataSource = null'?你期望列在兩個請求之間改變嗎?如果不是,您可能想要完全從該方法中刪除列創建。 –
是的,列數可以改變。查詢的結果集可以根據用戶選擇的日期範圍而有所不同。另外,試着移動'= null',但它沒有幫助。謝謝 – Lane
@Lane,我有同樣的問題,但不是datagridview。我正在使用GridView來綁定數據,並且在循環過程中,它非常慢,GridView沒有Columns.AddRange函數......想知道爲什麼以及如何修復您的案例?謝謝。 – Princa