控制事件(已更改)在DataTable中

时间:2017-06-02 07:19:54

标签: vb.net

Helo:

如何解决[DataGridView]中[DataTable]中[RowChanged]事件的问题。

说明:你已经在dataTable中创建了一个列来找出哪些行已被修改,以便于知道这些行在数据库中更新它们,但是事件中的问题(Row_Changed),不能通过代码中的更多单词解释,在修改任何行后看到(ISCHANGE)列,并覆盖你找到的保存按钮,取值为True,然后为False;

Public Class Class1

Public Table As DataTable

Sub New()
    Table = New DataTable
    Table.Columns.Add("IsChange", System.Type.GetType("System.Boolean"))
    Table.Columns.Add("TeacherName", System.Type.GetType("System.String"))
    Table.Columns("IsChange").DefaultValue = False
    Dim dr As DataRow = Table.Rows.Add
    dr("TeacherName") = "X1"
    dr = Table.Rows.Add
    dr("TeacherName") = "X2"
    dr = Table.Rows.Add
    dr("TeacherName") = "X3"
    dr = Table.Rows.Add

    AddHandler Table.RowChanged, New DataRowChangeEventHandler(AddressOf Row_Changed)
End Sub

Sub New(SourceDataTable As DataTable)
    'Import DataTable 
    Table = SourceDataTable
End Sub

Public Sub Save()
    GotoChange = False 'disable the event (Row_Changed)
    For ALoop As Integer = 0 To Table.Rows.Count - 1
        '=======================================
        'Here Code Save To DataBase
        '
        '
        '=======================================
        Table(ALoop)("IsChange") = False 'RowChanged =False
    Next
    GotoChange = True 'Enabled the event (Row_Changed)
End Sub

Dim GotoChange As Boolean = True 'This variable is to disable the event (Row_Changed)
Private Sub Row_Changed(ByVal sender As Object, ByVal e As DataRowChangeEventArgs)
    If Not GotoChange Then Exit Sub
    If e.Action = DataRowAction.Add Or e.Action = DataRowAction.Change Then
        If CBool(e.Row("IsChange")) = False Then
            MsgBox("IsChange")
            e.Row("IsChange") = True 'If [True] this means that the row has been changed 
        End If
    End If
End Sub
End Class

表格代码: 更改任何行然后按钮保存:

Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim A As New Class1
    Me.DataGridView1.DataSource = A.Table
End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim A As New Class1(Me.DataGridView1.DataSource)
    'Change Value Any Row Then Button Save
    'Here Problem: Show Column(IsChang) After Save 
    'The value First (False) Then (True)
    A.save()
End Sub
End Class

0 个答案:

没有答案