)
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 get the list of dependent cells for a particular cell in WinForms Spreadsheet (SfSpreadsheet)?

Platform: WinForms |
Control: Spreadsheet |
Published Date: July 28, 2016 |
Last Revised Date: January 27, 2020
Tags: formula

Dependent cells for a particular cell

SfSpreadsheet provides support to get the list of dependent cells for a particular cell. You can get the list of cells dependent on the cell by looping the PrecedentCells of FormulaEngine, like below code example.

C#

public List<String> GetDependentCells(int rowindex,int columnindex)
{
    var list = new List<string>();
    var grid = Spreadsheet.ActiveGrid;
    var family = FormulaEngine.GetSheetFamilyItem(grid);
    var cellref = family.GetTokenForGridModel(grid) + GridRangeInfo.GetAlphaLabel(columnindex) + rowindex;
    //To get the dependent cell
    if (grid.FormulaEngine.PrecedentCells.ContainsKey(cellref) && grid.FormulaEngine.PrecedentCells[cellref] != null)
    {
       Calculatedependentcell(cellref,list);
    }
    return list;
}
public void Calculatedependentcell(string precedentCell,List<string> list)
{
    var grid = Spreadsheet.ActiveGrid;
    if (grid.FormulaEngine.PrecedentCells[precedentCell] == null) return;         
      var ht = (Hashtable)((Hashtable)grid.FormulaEngine.PrecedentCells[precedentCell]).Clone();            
      foreach (var o in ht.Keys)
      {             
          var s1 = o as string;
          var row = grid.FormulaEngine.RowIndex(s1);
          var col = grid.FormulaEngine.ColumnIndex(s1);
          var cell = GridRangeInfo.GetAlphaLabel(col) + row;
          if (s1 != null)
          {
             if (ht.Keys.Count == 1)
                list.Add(s1);
             else
             {
                list.Add(s1);
                Calculatedependentcell(s1,list);//recursive call 
             }            
          }
      }
}

If you want to get the dependent cells of particular cell when its value changed, then subscribe the CellValueChanged event of Worksheet like below.

Spreadsheet.ActiveSheet.CellValueChanged += ActiveSheet_CellValueChanged;
private void ActiveSheet_CellValueChanged(object sender, CellValueChangedEventArgs e)
 {
     var list = GetDependentCells(e.Range.Row, e.Range.Column);
 }

Sample:

WPF

WinForms

UWP

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