)
We use cookies to give you the best experience on our website. If you continue to browse, then you agree to our privacy policy and cookie policy. (Last updated on: June 24, 2019).
Unfortunately, activation email could not send to your email. Please try again.
Syncfusion Feedback

How to obtain old and new value of the cells while performing drag fill operation in WinForms Spreadsheet (SfSpreadsheet)?

Platform: WinForms |
Control: Spreadsheet |
Published Date: February 28, 2017 |
Last Revised Date: January 24, 2020

Drag fill operation

You have to create a new class which is derived from FillSeriesController and override the FillSeries & CopyCells methods to get the old and new value of the cells while performing drag and fill operation.

FillSeries method is invoked when the cell values are filled in a series after dragging and CopyCells method is invoked when the cell values are copied after dragging. On both methods, you can get the filled range from the argument “newRange”. Get the old value of the cells before calling the base method and get the new value of the cells after calling the base method like below code example.

protected override void FillSeries(GridRangeInfo oldRange, GridRangeInfo newRange)
{
    //You can get the old values of each cell by looping the excelRange.Row, excelRange.Column, excelRange.LastRow and excelRange.LastColumn
    var excelRangeString = newRange.ConvertGridRangeToExcelRange(grid);
    var excelRange = Worksheet[excelRangeString];
    base.FillSeries(oldRange, newRange);
 
    //You can get the new values (after fill) of each cell by looping the excelRange.
    excelRangeString = newRange.ConvertGridRangeToExcelRange(grid);
    excelRange = Worksheet[excelRangeString];
}
 
protected override void CopyCells(GridRangeInfo oldRange, GridRangeInfo newRange)
{
    //You can get the old values of each cell by looping the excelRange.Row, excelRange.Column, excelRange.LastRow and excelRange.LastColumn
    var excelRangeString = newRange.ConvertGridRangeToExcelRange(grid);
    var excelRange = Worksheet[excelRangeString];
    base.CopyCells(oldRange, newRange);
 
    //You can get the new values (after fill) of each cell by looping the excelRange.
    excelRangeString = newRange.ConvertGridRangeToExcelRange(grid);
    excelRange = Worksheet[excelRangeString];
}

 

Then assign the instance of that custom FillSeriesController to the FillSeriesController property of each SpreadsheetGrid in the WorkbookLoaded and WorksheetAdded event of Spreadsheet.

C#

spreadsheet.WorkbookLoaded += spreadsheet_WorkbookLoaded;
spreadsheet.WorksheetAdded += spreadsheet_WorksheetAdded;
 
void spreadsheet_WorksheetAdded(object sender, WorksheetAddedEventArgs args)
{
    var grid = spreadsheet.ActiveGrid;
    grid.FillSeriesController = new FillSeriesControllerExt(grid);
}
 
void spreadsheet_WorkbookLoaded(object sender, WorkbookLoadedEventArgs args)
{
    foreach (var grid in args.GridCollection)
    {
        grid.FillSeriesController = new FillSeriesControllerExt(grid);
    }
}

Samples: WinForms

 

2X faster development

The ultimate WinForms UI toolkit to boost your development speed.
ADD COMMENT
You must log in to leave a comment

Please sign in to access our KB

This page will automatically be redirected to the sign-in page in 10 seconds.

Up arrow icon

Warning Icon You are using an outdated version of Internet Explorer that may not display all features of this and other websites. Upgrade to Internet Explorer 8 or newer for a better experience.Close Icon

Live Chat Icon For mobile
Live Chat Icon