Winforms DataRepeater 捕获数据已更改
Winforms DataRepeater Catch Data Changed
我有一个带 Visual Basic Power Packs - DataRepeater control 的 WinForm,在这个控件上我有一个复选框,它是数据绑定到我的数据库中的布尔字段。数据库只是 XML 和 XSD。
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
因为我正在从 XML 读取数据库,所以当您接受更改时,它所做的只是在内存中更新,而不是实际的 XML 文件。
LocalDS.WriteXml(My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\" & "TvLinks" & "\TVSeriesDB.xml")
所以我需要写回 XML 文件以实际保存在内存中所做的更改。如果数据库很大,这可能是一个耗时的过程,因此请使用异步函数来保存。
我有一个带 Visual Basic Power Packs - DataRepeater control 的 WinForm,在这个控件上我有一个复选框,它是数据绑定到我的数据库中的布尔字段。数据库只是 XML 和 XSD。
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
因为我正在从 XML 读取数据库,所以当您接受更改时,它所做的只是在内存中更新,而不是实际的 XML 文件。
LocalDS.WriteXml(My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\" & "TvLinks" & "\TVSeriesDB.xml")
所以我需要写回 XML 文件以实际保存在内存中所做的更改。如果数据库很大,这可能是一个耗时的过程,因此请使用异步函数来保存。