Spread for Silverlight provides the functionality where users can undo their last operation using Ctrl+Z. However, one of the Spread users suggested that spread should also offer the option to undo the operation of adding and removing rows. This prompted me to come up with this blog. For the implementation, we need to create a custom class which Implements IUndo interface and inherits from ActionBase class for both our add and remove undo functionality. Following code shows how to Add/Remove Rows :
Public Class AddRowsUndo Inherits ActionBase Implements IUndo Private _row As Integer Private _rowCount As Integer Public Sub New(row As Integer, rowCount As Integer) _row = row _rowCount = rowCount End Sub Public Overrides Function CanExecute(parameter As Object) As Boolean Return True End Function Public Overrides Sub Execute(parameter As Object) Dim sheet = TryCast(parameter, SpreadView).ActiveSheet sheet.AddRows(\_row, \_rowCount) End Sub Public ReadOnly Property CanUndo As Boolean Implements GrapeCity.Windows.SpreadSheet.UI.IUndo.CanUndo Get Return True End Get End Property Public Sub SaveState() Implements GrapeCity.Windows.SpreadSheet.UI.IUndo.SaveState End Sub Public Function Undo(parameter As Object) As Boolean Implements GrapeCity.Windows.SpreadSheet.UI.IUndo.Undo Try Dim sheet = TryCast(parameter, SpreadView).ActiveSheet sheet.RemoveRows(\_row, \_rowCount) Catch Return False End Try Return True End Function
Now we have a custom undo class ready for AddUndo action. Create an object of this AddRowsUndo class and pass it to Do() method of Spread’s UndoManager class.
gcSpreadSheet1.UndoManager.[Do](New AddRowsUndo(2, 3))
With the above code you will be able to add rows and undo it using Ctrl+Z. Please download the attached sample for detailed implementation for Undo action for Add and remove rows. Download VB sample Download C# Sample