【问题标题】:vb.net rebind datagrid to display changes in vb.netvb.net 重新绑定数据网格以显示 vb.net 中的更改
【发布时间】:2012-02-13 19:08:30
【问题描述】:

我有以下代码在对数据库进行更新后刷新表单中的数据网格。我的问题是为什么我必须清除数据源然后重新添加它才能显示更改。我认为刷新方法可以做到这一点,但我似乎无法让它发挥作用。有没有更有效的方法来刷新数据网格而不是重置数据源?

Public Sub addPlan(ByVal planname, ByVal plannumber)
    Dim planinfo As New changeDatabase(planname, plannumber, planAdapter)

    planinfo.addPlan()
    Form1.DataGridView1.EndEdit()

    Form1.DataGridView1.DataSource = ""
    Form1.DataGridView1.DataSource = planAdapter.GetData()
End Sub

【问题讨论】:

    标签: .net vb.net data-binding datagridview datasource


    【解决方案1】:

    下面的代码显示了一种有效的设置方法:

    Protected WithEvents myWordClueList As WordClueList
    Protected gridBindingSource As BindingSource
    
    Public Sub New()
    
        ' This call is required by the designer.
        InitializeComponent()
    
        myWordClueList = New WordClueList()
    
        myWordClueList.Add(New WordCluePair With {.Word = "Eden", .Clue = "First garden"})
        myWordClueList.Add(New WordCluePair With {.Word = "Fears", .Clue = "Aggregate of negative emotions"})
    
        ' Instantiate a binding source for the GridView
        gridBindingSource = New BindingSource With {.DataSource = myWordClueList}
        WordClueGrid.DataSource = gridBindingSource
    
    End Sub
    

    诀窍是使用绑定源对象。

    要在对 DataSource 进行更改时更新 GridView,请调用 BindingSource 对象的 ResetBindings 方法。

            myWordClueList.OrderBy(Function(pairRow As WordCluePair) pairRow)
            gridBindingSource.ResetBindings(False)
    

    【讨论】:

      【解决方案2】:

      尝试创建一个显式的BindingSource 并为其分配一个数据源,然后将DataGridView 的DataSource 属性设置为BindingSource 实例。

      BindingSource 对象的ResetBinding 方法将导致DataGridView 重新读取列表中的所有项目并刷新所有显示的值。

      Dim bindingSource As BindingSource
      bindingSource = New BindingSource()
      bindingSource.DataSource = planAdapter.GetData()
      Form1.DataGridView1.DataSource = bindingSource
      
      bindingSource.ResetBindings(false)
      

      注意:传递 false 表示原始数据源中只有值发生了变化,true 表示数据的 schema 发生了变化。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多