Parameters
- row
- The row to update.
- fieldName
- The field name to update.
- value
- The new value.
Exception | Description |
---|---|
ArcGIS.Core.CalledOnWrongThreadException | This method or property must be called within the lambda passed to QueuedTask.Run. |
private void HookChangedEvent() { // subscribe to the RowChangedEvent Table table = MapView.Active.Map.GetLayersAsFlattenedList().OfType<FeatureLayer>().FirstOrDefault().GetTable(); RowChangedEvent.Subscribe(MyRowChangedEvent, table); } private void MyRowChangedEvent(RowChangedEventArgs args) { // RowEvent callbacks are always called on the QueuedTask so there is no need // to wrap your code within a QueuedTask.Run lambda. //example of modifying a field on a row that has been created var parentEditOp = args.Operation; // avoid recursion if (_lastEdit != args.Guid) { //update field on change parentEditOp.Modify(args.Row, "ZONING", "New"); _lastEdit = args.Guid; } }
//See "Change Annotation Text Graphic" for an alternative if TEXTSTRING is missing from the schema await QueuedTask.Run(() => { //annoLayer is ~your~ Annotation layer... // use the inspector methodology var insp = new Inspector(); insp.Load(annoLayer, oid); // make sure TextString attribute exists. //It is not guaranteed to be in the schema ArcGIS.Desktop.Editing.Attributes.Attribute att = insp.FirstOrDefault(a => a.FieldName == "TEXTSTRING"); if (att != null) { insp["TEXTSTRING"] = "Hello World"; //create and execute the edit operation EditOperation op = new EditOperation(); op.Name = "Update annotation"; op.Modify(insp); //OR using a Dictionary - again TEXTSTRING has to exist in the schema //Dictionary<string, object> newAtts = new Dictionary<string, object>(); //newAtts.Add("TEXTSTRING", "hello world"); //op.Modify(annoLayer, oid, newAtts); op.Execute(); } });
//must support editing! var featSceneLayer = MapView.Active.Map.GetLayersAsFlattenedList() .OfType<FeatureSceneLayer>().FirstOrDefault(); if (!featSceneLayer.HasAssociatedFeatureService || !featSceneLayer.IsEditable) return; var ok = await QueuedTask.Run(() => { var editOp = new EditOperation() { Name = "Edit FeatureSceneLayer Attributes", SelectModifiedFeatures = true }; //make an inspector var inspector = new Inspector(); //get the attributes for the specified oid inspector.Load(featSceneLayer, oid); inspector["PermitNotes"] = "test";//modify editOp.Modify(inspector); return editOp.Execute();//synchronous flavor });
Target Platforms: Windows 11, Windows 10, Windows 8.1