通过委托加载DataGridView

时间:2012-03-13 18:45:27

标签: vb.net datagridview delegates

我正在尝试通过Delegate更新DataGridView。这是简单应用程序的一部分,但初始查询需要4-5秒才能生成。我希望FillSchema构建DataGridView,以便应用程序快速启动,然后更新数据。这是我第一次涉足代表,所以所有批评都受到欢迎。

Private Sub LoadGrid(ByVal loadType As String)
    StringBuild()

    If loadType = "Schema" Then
        da.FillSchema(ds, SchemaType.Source, "Requests")
    Else
        da.Fill(ds, "Requests")
    End If
End Sub

Private Sub LoadGridAsync()
    Dim del As New delLoadGrid(AddressOf LoadGrid)
    Dim cb As New AsyncCallback(AddressOf LoadGridCallback)
    Dim result As IAsyncResult
    result = del.BeginInvoke("Full", cb, del)
End Sub

Private Sub LoadGridCallback(ByVal result As IAsyncResult)

    Dim delS As delLoadGrid
    Dim delR As New delRefreshGrid(AddressOf RefreshGrid)
    delS = CType(result.AsyncState, delLoadGrid)
    delS.EndInvoke(result)

    Invoke(delR)
End Sub

Private Sub RefreshGrid()
    dgvSign.Update()
End Sub

我可以在RefreshGrid子中调试。它肯定会触发。关于为什么不更新的任何想法?

1 个答案:

答案 0 :(得分:1)

我自己并没有太多地使用DataGrid,但我认为Update方法与将数据输入控件无关,只是它重新绘制的方式。因此,一旦您在后台线程上加载了数据,您仍然需要实现一些逻辑才能将其加入网格中。您需要一些代码来在RefreshGrid中设置DataSource。