1

当我更新数据源时,我试图让 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 不会更新。

4

4 回答 4

0

Me.TableAdapter1.Fill(Me.DataSet1.Table1)

于 2014-09-19T06:45:17.027 回答
0

与 DataGridView 有类似问题没有显示来自我的数据源的任何数据,发现我的绑定类属性是常规的 int 或 string,而不是使用 get set 声明。

从改变

诠释兑换ID;

公共 int RedeemID { 获取;放; }

于 2013-10-07T20:52:03.277 回答
0

好的,我会解决这个问题。Bindingsources 与 DGV 一起使用时非常有用。然而,他们往往很害怕,因为他们不提供任何信息,为什么他们不工作。

首先我会说您的绑定源有错误的数据源。

_dgbNews = AllNews()
BindingSource1.DataSource = AllNews()
DataGridView1.DataSource = BindingSource1

如您所见,您将 AllNews() 作为数据源。但是您将内容添加到 _dgbNews 并期望 Allnews() 发生变化。Protip,它没有。如果要将 DataSource 设置为此:

BindingSource1.DataSource = _dgbNews

然后,至少您应该期望在更新列表时会发生一些变化。现在这就是你真正想念的。在按钮保存中单击您将项目添加到列表中,如果您完成了上述操作,现在就可以了。但是等等,数据源发生了变化,什么也没发生。这是因为您没有告诉 datagridview 进行更改。让 Bindingsource 告诉它连接到的所有内容以进行更新。有了这个:

BindingSource1.ResetBindings(True) 

这比 DGV.Refresh (现在可能工作)要好,因为您的绑定源可以附加到其他东西(我知道它不是,但供将来参考)。

试试这个,看看它是否会更好。

于 2013-01-30T07:46:46.083 回答
0

尝试这个:

(从数据适配器执行更新命令后)

GRIDVIEW_NAME.DATABIND()
于 2014-04-28T07:36:30.123 回答