vb.net重新绑定datagrid以显示vb.net中的更改
我有以下代码,在对数据库进行更新后刷新表单中的datagrid。我的问题是,为什么我必须清除数据源,然后重新添加以显示更改。我认为刷新方法可以做到这一点,但我似乎无法实现这一点。有没有比重置数据源更有效的方法来刷新数据网格vb.net重新绑定datagrid以显示vb.net中的更改,.net,vb.net,data-binding,datagridview,datasource,.net,Vb.net,Data Binding,Datagridview,Datasource,我有以下代码,在对数据库进行更新后刷新表单中的datagrid。我的问题是,为什么我必须清除数据源,然后重新添加以显示更改。我认为刷新方法可以做到这一点,但我似乎无法实现这一点。有没有比重置数据源更有效的方法来刷新数据网格 Public Sub addPlan(ByVal planname, ByVal plannumber) Dim planinfo As New changeDatabase(planname, plannumber, planAdapter) planin
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
尝试创建显式的
BindingSource
并为其分配数据源,然后将DataGridView
的数据源属性设置为BindingSource实例
BindingSource
对象的ResetBinding
方法将导致DataGridView
重新读取列表中的所有项目并刷新所有显示的值
Dim bindingSource As BindingSource
bindingSource = New BindingSource()
bindingSource.DataSource = planAdapter.GetData()
Form1.DataGridView1.DataSource = bindingSource
bindingSource.ResetBindings(false)
注意:传递false意味着只有值在原始数据源中发生了更改,传递true意味着数据的架构发生了更改。下面的代码显示了一种有效的设置方法:
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
诀窍是使用绑定源对象
myWordClueList.OrderBy(Function(pairRow As WordCluePair) pairRow)
gridBindingSource.ResetBindings(False)
要在对数据源进行更改时更新GridView,请调用BindingSource对象的ResetBindings方法
myWordClueList.OrderBy(Function(pairRow As WordCluePair) pairRow)
gridBindingSource.ResetBindings(False)