AnsweredAssumed Answered

Modifying Feature Templates - changes with 1.4?

Question asked by kelleycl on Jan 19, 2017
Latest reply on Jan 20, 2017 by sean_jones-esristaff

I am creating an add-in, and one piece of required functionality is to change the default value of a text field in a layer's editing template(s).  I had this working in 1.3, but when I upgraded to 1.4, it no longer works.  The code runs without error, but the default value is not changed in any of the templates when I look at them in Pro.  However, if I re-run the functionality and step through the code, the value IS changed in the CIM layer definition templates.  To confirm that there is not an issue with another part of my add-in, I created a test module with just this functionality and am seeing similar problems. 

 

Below is the method that I am calling from a button click on a simple dock pane, which also has a text box for the new value.  My project has a layer named Parcels with a text field named TestFld.  How do I change default values for a template? If this change is due to 1.4, is there a resource that describes these changes in case I find other problems with the upgrade?

 

Thank you,

Kelley

 


private async Task UpdateTemplateDefaultValue()
{
    //Get parcels layer
    var featLayer = MapView.Active.Map.FindLayers("Parcels").First();
           
    await QueuedTask.Run(() =>
    {
        //Get CIM layer definition
        var layerDef = featLayer.GetDefinition() as CIMFeatureLayer;

        //Get all templates on this layer
        var layerTemplates = layerDef.FeatureTemplates.ToList();
        CIMFeatureTemplate featTempl;
        // Update the default value for TestFld
        foreach (var templ in layerTemplates)
        {
            featTempl = templ as CIMFeatureTemplate;
            featTempl.DefaultValues["TestFld"] = _fieldValue;
        }
        //Set the layer definition templates from the list
        layerDef.FeatureTemplates = layerTemplates.ToArray();
        //Finally set the layer definition
        featLayer.SetDefinition(layerDef);
    });
}

Outcomes