ArcGIS Pro 3.7 API Reference Guide
ArcGIS.Core.CIM Namespace / CIMBasicRowTemplate Class
Members Example

In This Topic
    CIMBasicRowTemplate Class
    In This Topic
    Represents a basic row template.
    Syntax
    Example
    Change Default Edit tool for a template
    await QueuedTask.Run(() =>
          {
            var templateName = "Distribution"; // name of the template to update
            var toolDamlPlugInID = "esri_editing_SketchTwoPointLineTool"; // DAML ID of the tool to set as default
            var toolContentGUID = "e2096d13-b437-4bc1-94ea-4494c3260f72"; // Example GUID, replace with actual GUID from DAML
                                                                          // retrieve the edit template form the layer by name
            var template = featureLayer?.GetTemplate(templateName) as EditingTemplate;
            // get the definition of the layer
            var layerDef = featureLayer?.GetDefinition() as CIMFeatureLayer;
            if (template == null || layerDef == null)
              return;
            if (template.DefaultToolID != toolDamlPlugInID)
            {
              bool updateLayerDef = false;
              if (layerDef.AutoGenerateFeatureTemplates)
              {
                layerDef.AutoGenerateFeatureTemplates = false;
                updateLayerDef = true;
              }
    
              // retrieve the CIM edit template definition
              var templateDef = template.GetDefinition();
    
              // assign the GUID from the tool DAML definition, for example
              // <tool id="TestConstructionTool_SampleSDKTool" categoryRefID="esri_editing_construction_polyline" ….>
              //   <tooltip heading="">Tooltip text<disabledText /></tooltip>
              //   <content guid="e58239b3-9c69-49e5-ad4d-bb2ba29ff3ea" />
              // </tool>
              // then the toolContentGUID would be "e58239b3-9c69-49e5-ad4d-bb2ba29ff3ea"
    
              //templateDef.ToolProgID = toolContentGUID;
              templateDef.DefaultToolGUID = toolContentGUID;
    
              // set the definition back to 
              template.SetDefinition(templateDef);
    
              // update the layer definition too
              if (updateLayerDef)
                featureLayer.SetDefinition(layerDef);
            }
          });
    Hide or show editing tools on templates
    await QueuedTask.Run(() =>
       {
         //hide all tools except line tool on a given feature layer
         var editTemplates = featureLayer.GetTemplates();
         var newCIMEditingTemplates = new List<CIMEditingTemplate>();
    
         foreach (var et in editTemplates)
         {
           //initialize template by activating default tool
           et.ActivateDefaultToolAsync();
           var cimEditTemplate = et.GetDefinition();
           //get the visible tools on this template
           var allTools = et.ToolIDs.ToList();
           //add the hidden tools on this template
           allTools.AddRange(cimEditTemplate.GetExcludedToolIDs().ToList());
           //hide all the tools then allow the line tool
    
           allTools.AddRange(cimEditTemplate.GetExcludedToolIDs().ToList());
    
           cimEditTemplate.SetExcludedToolIDs(allTools.ToArray());
           cimEditTemplate.AllowToolID("esri_editing_SketchLineTool");
           newCIMEditingTemplates.Add(cimEditTemplate);
         }
         //update the layer templates
         var layerDef = featureLayer.GetDefinition() as CIMFeatureLayer;
         // Set AutoGenerateFeatureTemplates to false for template changes to stick
         layerDef.AutoGenerateFeatureTemplates = false;
         layerDef.FeatureTemplates = newCIMEditingTemplates.ToArray();
         featureLayer.SetDefinition(layerDef);
       });
    Create New Table Template using table.CreateTemplate
    // Creates new table templates for the specified standalone table.
    await QueuedTask.Run(() =>
    {
      var table = activeMap.GetStandaloneTablesAsFlattenedList().FirstOrDefault();
      var tableTemplate = table.GetTemplate("Template1");
    
      var definition = tableTemplate.GetDefinition();
      definition.Description = "New definition";
      definition.Name = "New name";
      //Create new table template using this definition
      table.CreateTemplate(definition);
    
      //You can also create a new table template using this extension method. You can use this method the same way you use the layer.CreateTemplate method.
      table.CreateTemplate("New template name", "Template description", tags: ["tag 1", "tag 2"]);
    });
    Update a Table Template
    // Updates the definition of a specified table template by modifying its name and description.
    var table = activeMap.GetStandaloneTablesAsFlattenedList().FirstOrDefault();
    await QueuedTask.Run(() =>
      {
        // get a table template
        var tableTemplate = table.GetTemplate("Template1") ?? throw new Exception("No table template named 'Template1' found");
        // get the definition
        var definition = tableTemplate.GetDefinition();
        definition.Description = "New definition";
        definition.Name = "New name";
        // update the definition
        tableTemplate.SetDefinition(definition);
      });
    Inheritance Hierarchy

    System.Object
       ArcGIS.Core.CIM.CIMObject
          ArcGIS.Core.CIM.CIMEditingTemplate
             ArcGIS.Core.CIM.CIMBasicRowTemplate
                ArcGIS.Core.CIM.CIMMultipatchFeatureTemplate
                ArcGIS.Core.CIM.CIMRowTemplate

    Requirements

    Target Platforms: Windows 11 Home, Pro, Enterprise (64 bit)

    ArcGIS Pro version: 3.0 or higher.
    See Also