Загрузить DataGridView через делегата - PullRequest
0 голосов
/ 13 марта 2012

Я пытаюсь обновить 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

Я могу отладить файл print в подпрограмме RefreshGrid, и он определенно срабатывает.Есть идеи, почему он не обновляется?

1 Ответ

1 голос
/ 13 марта 2012

Я сам не очень много использовал DataGrid, но я думаю, что метод Update не имеет ничего общего с получением данных в элемент управления, просто с перерисовкой. Поэтому, как только вы загрузите данные в фоновый поток, вам все равно потребуется реализовать некоторую логику, чтобы поместить их в таблицу. Вам нужен код для установки источника данных в RefreshGrid.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...