如何挂起一个DataGridView在更新它的列它的、挂起、DataGridView

2023-09-03 10:27:43 作者:戎马关山北

如何暂停.NET的DataGridView无法显示任何东西,而我更新其列?

下面是我目前的code。它的工作原理确定,但它是在foreach循环很慢;你可以看到HORIZ滚动条生长缓慢,因为每个列被添加。我构建UI列自己是我不想使用dataGridView1.AutoGenerateColumns因各种原因。

  //断开和复位的DataGridView
dataGridView1.DataSource = NULL;
dataGridView1.SuspendLayout();
dataGridView1.Columns.Clear();

//从SQL数据
数据表DT =新的DataTable();
SqlDataAdapter的适配器=新的SqlDataAdapter(选择employeehist *,康涅狄格州);
adapter.Fill(DT);

//构建DataGridView列
的foreach(在dt.Columns的DataColumn C)
{
    DataGridViewTextBoxColumn COL =新DataGridViewTextBoxColumn();
    col.SortMode = DataGridViewColumnSortMode.NotSortable;
    col.DataPropertyName = c.ColumnName;
    col.HeaderText = c.Caption;
    dataGridView1.Columns.Add(COL);
}

//重新连接的DataGridView
dataGridView1.DataSource = DT;
dataGridView1.ResumeLayout(真正的);
 

解决方案 华为Matebook d装系统怎么设置U盘启动 为什么我进入BIOS有PE系统的优盘它无法检测到

您可以使用VirtualMode与DataGridView中以非常有效地更新电网。看到这篇文章: http://msdn.microsoft.com/en-us/library /ms171622.aspx

从我记得,好像在UI更新任何前更新整个集合,而不是增加了UI每个新行添加/等。

How can I suspend a .NET DataGridView from displaying anything while I update its Columns?

Here's my current code. It works ok, but it is very slow on the foreach loop; you can see the horiz scroll bar grow slowly as each column is added. I'm building the UI columns myself as I do not want to use dataGridView1.AutoGenerateColumns for various reasons.

// 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);

解决方案

You can use VirtualMode with DataGridView in order to very efficiently update the grid. See this article: http://msdn.microsoft.com/en-us/library/ms171622.aspx

From what I remember, it seems to update the entire collection before updating anything on the UI, as opposed to adding to the UI for each new row added/etc.

 
精彩推荐