我正在尝试在更新数据源时更新datagridview并且我没有运气。
这是我的约束力:
Private _dgbNews As SortableBindingList(Of SalesMessageRecord)
Private Sub SalesMessageScreen_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
'_dgbNews.RaiseListChangedEvents = True
_dgbNews = AllNews()
BindingSource1.DataSource = AllNews()
DataGridView1.DataSource = BindingSource1
MassageDemRows()
End Sub
这是AllNews()
:
Public Function AllNews() As SortableBindingList(Of SalesMessageRecord)
Dim sm = New SortableBindingList(Of SalesMessageRecord)
Dim allnewsitems = News.GetAllNewsItems(Configuration.CompanyID).ToList()
For Each allnewz As News In allnewsitems
Dim smr = New SalesMessageRecord
smr.Body = allnewz.NewsBody
smr.CorporationId = CType(allnewz.CorporationId, Guid)
smr.Expiration = allnewz.Expiration
smr.IsActive = allnewz.IsActive
smr.NewsId = allnewz.NewsId
smr.Title = allnewz.NewsTitle
smr.SortOrder = allnewz.OrderNumber
smr.TokenId = allnewz.TokenId
smr.IsNew = False
sm.Add(smr)
Next
Return sm
End Function
这就是我要更新它的地方:
Private Sub button_Save_Click(sender As System.Object, e As System.EventArgs) Handles button_Save.Click
If _currentRow < 0 Then
Return
End If
_dgbNews(_currentRow).Expiration = datetimepicker_ExpirationDate.Value
_dgbNews(_currentRow).SortOrder = CInt(numericupdown_SortNumber.Value)
_dgbNews(_currentRow).IsActive = checkbox_Active.Checked
_dgbNews(_currentRow).Body = richtextbox_Body.Text
_dgbNews(_currentRow).Title = textbox_Title.Text
DataGridView1.Refresh()
News.UpdateNewsRecord(_dgbNews(_currentRow).NewsId,
_dgbNews(_currentRow).Expiration,
_dgbNews(_currentRow).SortOrder,
_dgbNews(_currentRow).IsActive,
_dgbNews(_currentRow).Body,
_dgbNews(_currentRow).Title)
End Sub
数据库正在更新而没有问题,但datagridview不会更新。
答案 0 :(得分:0)
是的,我会对此采取行动。绑定源与DGV一起使用时非常有用。然而,他们往往会对他们没有提供任何信息的方式感到遗憾,因为他们为什么不工作。
首先我要说你的绑定源有错误的数据源。
_dgbNews = AllNews()
BindingSource1.DataSource = AllNews()
DataGridView1.DataSource = BindingSource1
您可以将AllNews()作为数据源。但是你向_dgbNews添加东西并期望Allnews()改变。 Protip,它没有。如果您要将DataSource设置为:
BindingSource1.DataSource = _dgbNews
然后至少在列表更新时应该会发生一些变化。现在这就是你真正想念的。在按钮保存中单击您将一个项目添加到列表中,如果您完成上述操作,现在可以正常使用。但等等,数据源发生了变化,没有任何反应。这是因为您没有告诉datagridview更改。使Bindingsource告诉它所连接的所有内容以进行更新。有了这个:
BindingSource1.ResetBindings(True)
这比DGV.Refresh(现在可能有效)更好,因为你的bindingsource可以附加到其他东西(我知道它不是,但供将来参考)。
试试这个,看看它是否会变得更好。
答案 1 :(得分:0)
如果DataGridView没有显示来自我的数据源的任何数据的类似问题,我发现我的绑定类属性是常规的int或字符串,而不是使用get set声明。
从
更改int RedeemID;
到
public int RedeemID {get;组; }
答案 2 :(得分:0)
尝试这个:
(从数据适配器执行更新命令后)
GRIDVIEW_NAME.DATABIND()
答案 3 :(得分:0)
Me.TableAdapter1.Fill(Me.DataSet1.Table1)