【发布时间】:2015-02-17 02:38:42
【问题描述】:
我有一个 Windows 窗体应用程序,其 DataGridView 由 TableAdapter 填充。我正在使用Fill 方法在循环的Async sub 中更新UI 的数据,就像这样。
Private Async Sub updateUI()
Dim sw As New Stopwatch
While True
Await Task.Delay(3000)
sw.Restart()
myTableAdapter.Fill(getDataWithMySQL())
'myTableAdapter.Fill(myDataSet.myTable)
logger.Debug(sw.ElapsedMilliseconds)
End While
End Sub
getDataWithMySQL函数如下:
Private Function getDataWithMySQL() As myDataSet.myDataTable
Dim connStr As String = My.Settings.myConnectionString
Dim sql As String = "SELECT ... LEFT JOIN ..."
Dim dt As New myDataSet.myDataTable
Using conn As New MySqlConnection(connStr)
Using cmd As New MySqlCommand()
With cmd
.CommandText = sql
.Connection = conn
End With
Try
conn.Open()
Dim sqladapter As New MySqlDataAdapter(cmd)
sqladapter.Fill(dt)
Catch ex As MySqlException
MsgBox(ex.Message)
End Try
End Using
End Using
Return dt
End Function
myTableAdapter.Fill(myDataSet.myTable) 工作正常,但表现不佳,而 myTableAdapter.Fill(getDataWithMySQL()) 表现更好,正如我尚未回答的问题 here 中所报告的那样。
由于某种原因,myTableAdapter.Fill(getDataWithMySQL()) 不再起作用。它不会引发错误并且dt 填充了正确的数据,但DataGridView 没有更新。它以前工作过,我认为我没有改变任何会影响这一点的东西。任何想法为什么DataGridView 没有更新?
【问题讨论】:
-
DataGridView.DataSource属性设置为什么?确保将其设置为您的 DataTable。 -
@Supersnake 设置为数据表绑定源。
-
您是否将 TableAdapter 的 ClearBeforeFill 属性设置为 true?
-
也可以尝试调用dataGridViewInstance.Refresh()...
-
@NeillVerreynne 我尝试了你的两个建议,但不幸的是都没有奏效......为什么我要把
ClearBeforeFill改为True?
标签: c# .net vb.net datagridview tableadapter