تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
كيفية عمل تراجع عن اخر عملية ادخال بيانات داخل الداتاجريد
#2
-
منقول

طريقة عمل تراجع عن التعديلات التي تمت في خلايا DataGridView باستخدام المكدس Stack (ويمكن تعديلها ليتم تطبيقها على الأدوات الأخرى)
يحتوي المثال عل رز Button2 وفيه مجرد عرض محتوى المكدس الخاص بالتعديلات التي تمت (قد يفيد)
كود :
Public Class Form1

#Region " DataGridViewUndoStack "
    Dim DataGridViewUndoStack As New Stack(Of undo)
    Structure undo
        Dim rows As Integer ' عدد الأسطر
        Dim row As Integer  ' رقم السطر
        Dim col As Integer  ' رقم العمود
        Dim val As Object   ' قيمة الخلية
    End Structure
    Private Sub DataGridView1_CellBeginEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellCancelEventArgs) Handles DataGridView1.CellBeginEdit
        Dim o As New undo
        o.rows = DataGridView1.Rows.Count
        o.row = DataGridView1.CurrentCell.RowIndex
        o.col = DataGridView1.CurrentCell.ColumnIndex
        o.val = DataGridView1.CurrentCell.Value
        DataGridViewUndoStack.Push(o)
    End Sub
    Private Sub DataGridViewDoUndo() ' التراجع
        If DataGridViewUndoStack.Count > 0 Then
            Dim o As New undo
            o = DataGridViewUndoStack.Pop
            Me.DataGridView1.Rows(o.row).Cells(o.col).Value = o.val
            Me.DataGridView1.CurrentCell = DataGridView1.Rows(o.row).Cells(o.col)
            Do While DataGridView1.Rows.Count > o.rows
                DataGridView1.Rows.RemoveAt(If(DataGridView1.AllowUserToAddRows, DataGridView1.Rows.Count - 2, DataGridView1.Rows.Count - 1))
            Loop
        End If
    End Sub
#End Region

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        DataGridViewDoUndo()
    End Sub

    ' مجرد إضافة لعرض محتوى المكدس الخاص بالتعديلات التي تمت، قد يفيد
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim undoStacks As String = ""
        For i = 0 To DataGridViewUndoStack.Count - 1
            Dim o As New undo
            o = DataGridViewUndoStack.ElementAt(i)
            undoStacks &= i.ToString("000") & ": {" & o.row & ", " & o.col & "} " & o.val.ToString & vbNewLine
            If i = 10 Then
                undoStacks &= "يوجد أكثر" & vbNewLine & DataGridViewUndoStack.Count.ToString("000")
                Exit For
            End If
        Next
        MessageBox.Show(If(undoStacks = "", "لا توجد تعديلات", undoStacks), "UndoStack")
    End Sub

End Class
الرد }}}
تم الشكر بواسطة: سعود , king2512010


الردود في هذا الموضوع
RE: كيفية عمل تراجع عن اخر عملية ادخال بيانات داخل الداتاجريد - بواسطة vbnet - 16-05-14, 12:35 AM


التنقل السريع :


يقوم بقرائة الموضوع: