

Public MustInherit NotInheritable Class RowCreatedEvent
public static class RowCreatedEvent
If you need to edit additional tables within the RowEvent you MUST use the ArcGIS.Core.Data API to edit the tables directly. Do NOT use a new edit operation to create or modify features or rows in your RowEvent callback.
// Subscribes to row events for the currently selected feature layer in the active map view. await QueuedTask.Run(() => { //Listen for row events on a layer var featLayer = MapView.Active.GetSelectedLayers()[0] as FeatureLayer; var layerTable = featLayer.GetTable(); //subscribe to row events // row created event var rowCreateToken = RowCreatedEvent.Subscribe(rowChangedEventArgs => { }, layerTable); // row changed event var rowChangeToken = RowChangedEvent.Subscribe(rowChangedEventArgs => { }, layerTable); // row deleted event var rowDeleteToken = RowDeletedEvent.Subscribe(rowChangedEventArgs => { }, layerTable); });
// attach an event handler to receive notifications when a new row is created in the // associated table of the first feature layer found in the active map. Use this method to enable custom logic in // response to row creation events within your ArcGIS Pro add-in. // subscribe to the RowCreatedEvent Table table = MapView.Active.Map.GetLayersAsFlattenedList().OfType<FeatureLayer>().FirstOrDefault().GetTable(); RowCreatedEvent.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 edit operation var parentEditOp = rowChangedEventArgs.Operation; // set up some attributes var attribs = new Dictionary<string, object> { { "Layer", "Parcels" }, { "Description", "objectId: " + rowChangedEventArgs.Row.GetObjectID().ToString() + " " + DateTime.Now.ToShortTimeString() } }; //create a record in an audit table var sTable = MapView.Active.Map.FindStandaloneTables("EditHistory")[0]; var table = sTable.GetTable(); parentEditOp.Create(table, attribs); }, table);
// Attach an event handler to the <see cref="ArcGIS.Desktop.Editing.Events.RowCreatedEvent"/> for the table associated with the first <see cref="ArcGIS.Desktop.Mapping.FeatureLayer"/> in the active map. Use this method to monitor when new rows are created // in that table, enabling custom logic to be executed in response to record creation events. Table firstTable = MapView.Active.Map.GetLayersAsFlattenedList().OfType<FeatureLayer>().FirstOrDefault().GetTable(); RowCreatedEvent.Subscribe(rowChangedEventArgs => { // RowEvent callbacks are always called on the QueuedTask so there is no need // to wrap your code within a QueuedTask.Run lambda. // update a separate table not in the map when a row is created // You MUST use the ArcGIS.Core.Data API to edit the table. Do NOT // use a new edit operation in the RowEvent callbacks try { // get the edit operation var parentEditOp = rowChangedEventArgs.Operation; // set up some attributes var attribs = new Dictionary<string, object> { { "Description", "objectId: " + rowChangedEventArgs.Row.GetObjectID().ToString() + " " + DateTime.Now.ToShortTimeString() } }; // update Notes table with information about the new feature using var geoDatabase = new Geodatabase(new FileGeodatabaseConnectionPath(new Uri(Project.Current.DefaultGeodatabasePath))); using var table = geoDatabase.OpenDataset<Table>("Notes"); parentEditOp.Create(table, attribs); } catch (Exception e) { throw new Exception($@"Error in OnRowCreated for objectId: {rowChangedEventArgs.Row.GetObjectID()} : {e}"); } }, firstTable);
System.Object
ArcGIS.Desktop.Editing.Events.RowCreatedEvent
Target Platforms: Windows 11 Home, Pro, Enterprise (64 bit)