Is it possible to listen when user edits data by using some GP tool e.g . Calculate Field or Delete Field? I want to handle this event similarly when user modifies data in edit session and I'm listening for row events:
protected void HookEvents()
{
QueuedTask.Run(() =>
{
//Listen for row events on a layer
foreach (var layer in EditorIDLayers)
{
var layerTable = layer.GetTable();
_rowCreateToken = RowCreatedEvent.Subscribe(OnRowCreated, layerTable);
_rowChangedToken = RowChangedEvent.Subscribe(OnRowChanged, layerTable);
_rowDeleteToken = RowDeletedEvent.Subscribe(OnRowDeleted, layerTable);
}
});
}
protected void OnRowChanged(RowChangedEventArgs args)
{
if (_lastEdit != args.Guid) //avoid recursion
{
EditInfo edit = new EditInfo(args);
edit.ModifyOperation();
_lastEdit = args.Guid;
}
}
//.../
public EditInfo(RowChangedEventArgs rowEvent)
{
_MainViewModel = EditorIDViewModel.GetVM();
EditOp = rowEvent.Operation;
ModifiedRow = rowEvent.Row;
}
public void ModifyOperation()
{
TableDefinition definition = ModifiedRow.GetTable().GetDefinition();
var attributes = new Dictionary<string, object>();
attributes.Add(settings.EditorField, _MainViewModel.UserName);
attributes.Add(settings.DataSourceField, _MainViewModel.SelectedDatasource.Key.Item1);
EditOp.Modify(ModifiedRow, attributes);
}