我有一个DataGridView从SQL Server数据库加载数据的应用程序。当我加载数据时,需要花费很长时间。
DataGridView
我想向用户提供数据正在加载的信息。请问什么是将Progressbar数据加载到时的最佳连接方式DataGridView?
Progressbar
我不希望任何人为我编写完整的代码。我只是想知道如何做到。
我看到有人悬赏赏赐了我的问题。我想说的是,目前我正在使用此代码,如果合适的话,我将向您推荐。
DTGdataTable = new DataTable(); SqlDataAdapter SDA = new SqlDataAdapter SDA.Fill(DTGdataTable); dataGridView1.DataSource = DTGdataTable ;
谢谢大家的宝贵时间。
如果问题是从数据库中获取数据需要花费很长时间,那么我为您提供了一种可能的解决方案:
private void buttonLoad_Click(object sender, EventArgs e) { progressBar.Visible = true; progressBar.Style = ProgressBarStyle.Marquee; System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ThreadStart(loadTable)); thread.Start(); } private void loadTable() { // Load your Table... DataTable table = new DataTable(); SqlDataAdapter SDA = new SqlDataAdapter(); SDA.Fill(table); setDataSource(table); } internal delegate void SetDataSourceDelegate(DataTable table); private void setDataSource(DataTable table) { // Invoke method if required: if (this.InvokeRequired) { this.Invoke(new SetDataSourceDelegate(setDataSource), table); } else { dataGridView.DataSource = table; progressBar.Visible = false; } }
将将数据加载到另一个线程的方法,并在完成时设置数据源。应该有一个调用。如果要在进度条中显示百分比值,请不要使用“字幕”样式,而要添加其他函数和委托来调用以设置进度条的值。
如果将数据绑定到网格是问题,则不能将绑定放入另一个线程,并且可能会显示在另一个线程中运行的进度弹出窗口。
我希望这有帮助。