ArcGIS Pro 3.7 API Reference Guide
ArcGIS.Desktop.Editing.Events Namespace / RowChangedEventArgs Class / Row Property
Example

In This Topic
    Row Property (RowChangedEventArgs)
    In This Topic
    Gets the Row that was modified.
    Syntax
    Public ReadOnly Property Row As Row
    public Row Row {get;}
    Example
    Modify a record within Row Events - using Row.Store
    // Attach an event handler to receive notifications when a row in the selected
    // table is changed. The subscription targets the first <see cref="ArcGIS.Desktop.Mapping.FeatureLayer"/> found in
    // the active map. Use this method to monitor and respond to edits made to table records within the current map
    // context.
    Table thisTable = MapView.Active.Map.GetLayersAsFlattenedList().OfType<FeatureLayer>().FirstOrDefault().GetTable();
    RowChangedEvent.Subscribe(rowChangedEventArgs =>
      {
        // set the current row changed guid when you execute the Row.Store method
        // used for re-entry checking
        Guid _currentRowChangedGuid = new();
        // RowEvent callbacks are always called on the QueuedTask so there is no need 
        // to wrap your code within a QueuedTask.Run lambda.
    
        var row = rowChangedEventArgs.Row;
    
        // check for re-entry  (only if row.Store is called)
        if (_currentRowChangedGuid == rowChangedEventArgs.Guid)
          return;
    
        var fldIdx = row.FindField("POLICE_DISTRICT");
        if (fldIdx != -1)
        {
          //Validate any change to �police district�
          //   cancel the edit if validation on the field fails
          if (row.HasValueChanged(fldIdx))
          {
            // cancel edit with invalid district (5)
            var value = row["POLICE_DISTRICT"].ToString();
            if (value == "5")
            {
              //Cancel edits with invalid �police district� values
              rowChangedEventArgs.CancelEdit($"Police district {row["POLICE_DISTRICT"]} is invalid");
            }
          }
          // update the description field
          row["Description"] = "Row Changed";
          //  this update with cause another OnRowChanged event to occur
          //  keep track of the row guid to avoid recursion
          _currentRowChangedGuid = rowChangedEventArgs.Guid;
          row.Store();
          _currentRowChangedGuid = Guid.Empty;
        }
      }, thisTable);
    Determine if Geometry Changed while editing
    // Set up a listener for row change events on the table associated with the
    // provided feature layer. The event subscription occurs within a queued task to ensure thread safety.
    await QueuedTask.Run(() =>
     {
       //Listen to the RowChangedEvent that occurs when a Row is changed.
       var modifiedFeatureLayer = MapView.Active.Map.GetLayersAsFlattenedList().OfType<FeatureLayer>().FirstOrDefault(); ;
       RowChangedEvent.Subscribe(rowChangedEventArgs =>
         {
           // RowEvent callbacks are always called on the QueuedTask so there is no need 
           // to wrap your code within a QueuedTask.Run lambda.
    
           //Get the layer's definition
           var lyrDefn = modifiedFeatureLayer.GetFeatureClass().GetDefinition();
           //Get the shape field of the feature class
           string shapeField = lyrDefn.GetShapeField();
           //Index of the shape field
           var shapeIndex = lyrDefn.FindField(shapeField);
           //Original geometry of the modified row
           var geomOrig = rowChangedEventArgs.Row.GetOriginalValue(shapeIndex) as Geometry;
           //New geometry of the modified row
           var geomNew = rowChangedEventArgs.Row[shapeIndex] as Geometry;
           //Compare the two
           bool shapeChanged = geomOrig.IsEqual(geomNew);
           if (shapeChanged)
           {
             // The geometry has not changed
             Console.WriteLine("Geometry has not changed");
           }
           else
           {
             // The geometry has changed
             Console.WriteLine("Geometry has changed");
           }
         }, modifiedFeatureLayer.GetTable());
     });
    Requirements

    Target Platforms: Windows 11 Home, Pro, Enterprise (64 bit)

    ArcGIS Pro version: 3.0 or higher.
    See Also