Load(Table,IEnumerable<Int64>) Method
Load multiple table rows into the inspector. This method must be called on the MCT. Use QueuedTask.Run.
Parameters
- table
- A table from the geodatabase.
- oids
- An IEnumerable containing the object IDs to load.
Update Annotation Text via attribute. Caveat: The TEXTSTRING Anno attribute must exist
//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();
}
});
Edit the attributes of a FeatureSceneLayer
//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
});
Select features via the MapView
//assume the geometry used in SelectFeaturesEx() is coming from a
//map tool...
//
//SketchType = SketchGeometryType.Rectangle;
//SketchOutputMode = SketchOutputMode.Screen;
await QueuedTask.Run(() =>
{
var result = MapView.Active.SelectFeaturesEx(geometry);
//Get scene layers with selections
//At 2.x - var scene_layers = result.Where(kvp => kvp.Key is FeatureSceneLayer);
var scene_layers = result.ToDictionary<FeatureSceneLayer>();
foreach (var kvp in scene_layers)
{
var scene_layer = kvp.Key as FeatureSceneLayer;
var sel_oids = kvp.Value;
//If there are attributes then get them
if (scene_layer.HasAssociatedFeatureService)
{
var insp = new Inspector();
foreach (var oid in sel_oids)
{
insp.Load(scene_layer, oid);
//TODO something with retrieved attributes
}
}
}
});
Target Platforms: Windows 11, Windows 10
ArcGIS Pro version: 3 or higher.