【问题标题】:Winforms DataRepeater Catch Data ChangedWinforms DataRepeater 捕获数据已更改
【发布时间】:2015-08-10 03:52:16
【问题描述】:

我有一个带有Visual Basic Power Packs - DataRepeater control 的 WinForm,在这个控件上我有一个复选框,它是数据绑定到我的数据库中的布尔字段。数据库只是带有 XSD 的 XML。

Me.AutoDownloadCheckBox.DataBindings.Add(New System.Windows.Forms.Binding("CheckState", Me.TVSeriesBindingSource, "AutoDownload", True))

我试图捕捉复选框的单击事件,并在选中复选框时引发事件。但不会保存更改。

Imports TvSeriesData
Imports System.IO

Public Class Repeater  

    Private LocalDS As New TVSeriesDB 

    Public Sub New()

        ' This call is required by the designer.
        InitializeComponent()

        ' Add any initialization after the InitializeComponent() call.

        Dim TempFile As FileInfo
        TempFile = New FileInfo(My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\" & "TvLinks" & "\TVSeriesDB.xml")
        If TempFile.Exists Then
            LocalDS.ReadXml(My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\" & "TvLinks" & "\TVSeriesDB.xml")
        End If

        DataRepeater1.DataSource = LocalDS.TVSeries

    End Sub        

    Private Sub AutoDownloadCheckBox_Click(sender As Object, e As EventArgs) Handles AutoDownloadCheckBox.Click
        If LocalDS.HasChanges() Then LocalDS.AcceptChanges()
    End Sub

End Class

【问题讨论】:

    标签: .net vb.net winforms data-binding custom-controls


    【解决方案1】:

    由于我在您 AcceptChanges 时从 XML 读取数据库,所以它所做的只是在内存中更新,而不是实际的 XML 文件。

    LocalDS.WriteXml(My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\" & "TvLinks" & "\TVSeriesDB.xml")
    

    所以我需要写回 XML 文件以实际保存在内存中所做的更改。如果数据库很大,这可能是一个耗时的过程,因此请使用异步函数进行保存。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-13
      • 2020-06-12
      • 1970-01-01
      • 2015-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多