【问题标题】:Vb.Net DataGridView Datasource Not UpdatingVb.Net DataGridView 数据源未更新
【发布时间】:2016-12-09 11:45:56
【问题描述】:

我有一个 DataGridView,它在我的项目中使用 DataTable 作为源 (dtOrders)。我正在尝试使用已编辑的行更新 dtOrders 并让 DataGridView 显示更新的行。我正在使用从BackGroundWorker (bgwWriteToDatabase) 调用的以下代码

Public r as ArrayList = New ArrayList

Private Sub UpdateOrderTable()

    Try
        r.Add(RowNum)
        r.Add(bwOrderID)
        r.Add(bwClientID)
        r.Add(bwMaterials)
        r.Add(bwInstaller)
        r.Add(bwMaterialsCost)
        r.Add(bwInstallerCost)
        r.Add(bwElectricalCosts)
        r.Add(bwPipeFittingCosts)
        r.Add(bwSundriesCosts)
        r.Add(bwTotalCost)
        r.Add(bwNotes)

        dtOrders.Rows(r(0))("ID") = r(1)
        dtOrders.Rows(r(0))("ClientRef") = r(2)
        dtOrders.Rows(r(0))("Materials") = r(3)
        dtOrders.Rows(r(0))("Installer") = r(4)
        dtOrders.Rows(r(0))("MaterialsCost") = r(5)
        dtOrders.Rows(r(0))("InstallersCosts") = r(6)
        dtOrders.Rows(r(0))("ElectricalWork") = r(7)
        dtOrders.Rows(r(0))("PipeFittingValves") = r(8)
        dtOrders.Rows(r(0))("Sundries") = r(9)
        dtOrders.Rows(r(0))("TotalCosts") = r(10)
        dtOrders.Rows(r(0))("Notes") = r(11)

        bgwWriteToDatabase.ReportProgress(10, 10)

    Catch ex As Exception
        Debug.Print(ex.Message.ToString)
        Errorbits(3) = True
    End Try
End Sub


Private Sub bgwWriteToDatabase_ProgressChanged(sender As Object, e As System.ComponentModel.ProgressChangedEventArgs) Handles bgwWriteToDatabase.ProgressChanged
    If e.ProgressPercentage = 10 Then
        dgvViewOrders.DataSource = dtOrders
    End If
End Sub

只要在表单上按下提交按钮,就会执行代码。代码第一次运行时,DataGridView 完美更新,正确显示新信息,一切正常。

第二次按下提交按钮时,DataGridView 上的信息不会更新。我很难理解为什么它第一次有效,但第二次无效。

我已经调试过,代码在第一次运行时没有错误,在第二次运行时也没有错误,BackGroundWorker 在两个周期中以相同的方式执行,但在第二次运行时不会产生更新。

我在这里遗漏了什么明显的东西吗?

【问题讨论】:

  • 我只是想......我没有清除我的arraylist..我想知道它是否被添加到末尾
  • 那个代码中不需要arraylist。您可以将数据添加到 DataRow,而无需先将 var 存储在其他集合中。您也不需要逐行更新数据库。
  • 我将r ArrayList 作为参数在表单关闭时传递出去,所以在这种情况下我确实需要它。在上面的示例中,我只更新了一行,尽管我可以使用with 命令让它看起来更简单

标签: vb.net winforms datagridview


【解决方案1】:

我需要将r.Clear() 添加到UpdateOrder 子的顶部...

【讨论】:

    猜你喜欢
    • 2013-08-30
    • 1970-01-01
    • 1970-01-01
    • 2017-01-28
    • 2012-04-25
    • 2010-09-20
    • 2017-05-27
    • 2018-01-15
    相关资源
    最近更新 更多