0

使用此代码,我填充了一个 devexpress 网格控件,一切正常:

Private Sub tbccegek_SelectedPageChanged(ByVal sender As Object, ByVal e As DevExpress.XtraTab.TabPageChangedEventArgs) Handles tbccegek.SelectedPageChanged
    If tbccegek.SelectedTabPageIndex = 3 Then

        'gcCegek.DataSource = Nothing
        ConnectToDb(fbconn, "public")
        fbcommand.Connection = fbconn
        fbcommand.CommandText = "select cegazon, rovidnev, irsz||' '||varos||' '||utca||' '||hazszam as cim, adoszam, konyvpnem, osszktg_forg from cegek order by cegazon"
        fbadapter.SelectCommand = fbcommand

        fbadapter.Fill(fbdataset)
        fbdataset.Tables(0).TableName = "cegek"
        gcCegek.DataMember = "cegek"
        gcCegek.DataSource = fbdataset

        For i = 0 To fbdataset.Tables(0).Rows.Count - 1
            If fbdataset.Tables(0).Rows(i).Item(5) = "1" Then
                fbdataset.Tables(0).Rows(i).Item(5) = "Összköltség"
            ElseIf fbdataset.Tables(0).Rows(i).Item(5) = "0" Then
                fbdataset.Tables(0).Rows(i).Item(5) = "Forgalmi ktg."
            End If
        Next

        gcCegek.MainView.PopulateColumns()

        columnview = gcCegek.MainView
        columnview.Columns(0).Caption = "Cégazonosító"
        columnview.Columns(1).Caption = "Cégnév (rövid)"
        columnview.Columns(2).Caption = "Cím"
        columnview.Columns(3).Caption = "Adószám"
        columnview.Columns(4).Caption = "K.pnem"
        columnview.Columns(5).Caption = "Ktg.elsz"
        GridView1.BestFitColumns()

        fbconn.Close()
    End If
End Sub

但是,如果我在应用程序中修改一条记录,然后通过更新 sql 将其保存到数据库中,然后再次单击选项卡上的 gridcontrol,我看到,gridcontrol 中的值没有改变。但是在数据库中,存在修改后的值。

如您所见,在标签页更改事件中,我从一开始就填充了网格,我认为也应该有修改后的值。

你能帮我吗?

4

1 回答 1

0

解决这个问题的方法是重新从 DB 中重新获取数据到网格所连接的 DataSource。在这种情况下,网格将知道数据已更改并刷新其内容。

另外,我建议您在发布的事件处理程序中设置断点,并确保从数据库中获取实际修改的数据。

此外,使用以下代码更正确:

if not e.Page Is Nothing andalso e.Page.SelectedTabPageIndex = 3 Then
...
于 2013-01-09T21:08:30.083 回答