The configuration options for displaying an individual field within the FeatureTable widget.
Below are some things to consider when enabling/disabling editing in a field configuration.
Editing permissions can be broken down with the following levels of priority:
- Field - This is derived
from the FeatureLayer or SceneLayer. It takes what is set in the
Field.editable property. This
must always be
true
for editing to be enabled. This can be overridden using a field column configuration. - Config - The editable permissions on a field can be configured by setting the editable property of the FieldColumnConfig.
- FeatureTable - The editingEnabled property must be set on the table in order for any type of editing to be enabled.
For example, if table editing is disabled in the widget, i.e. enableEditing
is not set,
it is still possible to enable editing for a specific column by setting the
editable property. Vice versa
is also true, if table editing is enabled, a field configuration can be used to disable editing
for a specific column.
If the service's field is not editable, it is not possible to override its permissions using one of the options above.
- See also
// Shows how field column configs can be set to control editing
// within a table
const table = new FeatureTable({
editingEnabled: true, //enables editing on the entire table (if service allows it)
layer: featureLayer,
container: document.getElementById("table"),
fieldConfigs: [{ // autocasts to FieldColumnConfig
name: "NAME",
label: name,
direction: "asc",
},
{
name: "ADDRESS",
label: address,
editable: false, // disables editing for the ADDRESS field
required: true
}]
});
Constructors
-
new FieldColumnConfig(properties)
-
Parameterproperties Objectoptional
See the properties for a list of all the properties that may be passed into the constructor.
Example// Typical usage for FieldColumnConfig. const fieldConfig1 = new FieldColumnConfig({ name: "FID", label: "ID", // This field will not be initially shown within the table visible: false }); const fieldConfig2 = new FieldColumnConfig({ name: "NAME", label: "School Name", // The table will be sorted by this column // in ascending order direction: "asc" }); // Apply field configs to feature table const featureTable = new FeatureTable({ layer: featureLayer, fieldConfigs: [fieldConfig1, fieldConfig2], container: "tableDiv" });
Property Overview
Name | Type | Summary | Class |
---|---|---|---|
String | The name of the class. more details | Accessor | |
String | The field's description. more details | FieldConfig | |
String|null | Controls the sort order of the column. more details | FieldColumnConfig | |
Boolean | Indicates whether the field can be edited. more details | FieldConfig | |
Boolean | Indicates whether date fields should display input for editing time. more details | FieldConfig | |
Number | Use this in combination with FeatureTable.multiSortEnabled and FeatureTable.direction properties to set sorting functionality on multiple columns. more details | FieldColumnConfig | |
String | The field's label. more details | FieldConfig | |
Number | Restricts the input length. more details | FieldConfig | |
ButtonMenuConfig | Set this object to customize the field column's menu content. more details | FieldColumnConfig | |
Number | Restricts the input length. more details | FieldConfig | |
String | The field name. more details | FieldConfig | |
Boolean | Indicates whether the field is required. more details | FieldConfig | |
String | A reference to the name of an Arcade expression defined in the expressionInfos of the FeatureForm. more details | FieldConfig | |
Boolean | Indicates whether the field column can be sorted. more details | FieldColumnConfig | |
String | Aligns the columns cell content horizontally. more details | textAlign | |
Boolean | Indicates whether the field column is visible. more details | FieldColumnConfig |
Property Details
-
The name of the class. The declared class name is formatted as
esri.folder.className
.
-
The field's description. The description is shown below the field.
-
Controls the sort order of the column. This property will only be honored on one column in the FeatureTable widget. If direction is specified on more than one fieldColumn in the same FeatureTable, it will only be honored on the column with the highest index. For example, let's say the first column called
ObjectId
is set toasc
and another column later in the table order also has a set direction, the initialObjectId
column's direction will be ignored for the last one with the set direction.Possible Value Description asc Sorts the column in ascending order. desc Sorts the column in descending order. null No sort is applied to the column. Possible Values:"asc"|"desc"
-
Indicates whether the field can be edited.
This does not change the underlying service's field and whether it can be edited.
- Default Value:true
-
Since: ArcGIS Maps SDK for JavaScript 4.17
-
Indicates whether date fields should display input for editing time.
- Default Value:true
-
initialSortPriority NumberSince: ArcGIS Maps SDK for JavaScript 4.23
-
Use this in combination with FeatureTable.multiSortEnabled and FeatureTable.direction properties to set sorting functionality on multiple columns. This property indicates the index of the sorted column when compared to other columns, with lower numbers taking a higher priority.
If no sort priority is set, the priority defaults to the most recently-sorted column. This occurs when sorting via the UI, or programmatically by calling FeatureTable.sortColumn. For example, using the example snippet below, the sort order priority is set for three columns, with "Status" having the least priority. Calling
table.sortColumn("Status", "asc")
would update theStatus
column to the highest priority. This would also occur if manually sorting via the column's UI.- Default Value:null
- See also
Exampleconst table = new FeatureTable({ layer: featureLayer, multiSortEnabled: true, fieldConfigs: [{ // autocasts to FieldColumnConfig name: "ObjectId", direction: "asc", initialSortPriority: 1, // This field's sort order takes second-highest priority. }, { name: "Name", direction: "asc", initialSortPriority: 0, // This field's sort order takes the highest priority. }, { name: "Status", direction: "asc", initialSortPriority: 2 // This field's sort order is prioritized after Name and ObjectId, respectively. }], container: "tableDiv" });
-
The field's label. The label is shown above the field.
-
Restricts the input length.
This only applies to
numeric
andtext
field types.- Default Value:-1
-
Since: ArcGIS Maps SDK for JavaScript 4.16
-
Set this object to customize the field column's menu content.
- See also
-
Since: ArcGIS Maps SDK for JavaScript 4.16
-
Restricts the input length.
This only applies to
numeric
andtext
field types.- Default Value:-1
-
The field name.
-
Indicates whether the field is required.
This cannot change the underlying service's field requirements.
- Default Value:false
-
Since: ArcGIS Maps SDK for JavaScript 4.16
-
A reference to the name of an Arcade expression defined in the expressionInfos of the FeatureForm. The expression must follow the specification defined by the Constraint Arcade Profile. Expressions may reference field values using the
$feature
profile variable and must return eithertrue
orfalse
.When this expression evaluates to
true
and the element is visible, the element must have a valid value in order for the feature to be created or edited. When the expression evaluates tofalse
the element is not required. If no expression is provided, the default behavior is that the element is not required. If the referenced field is non-nullable, the required expression is ignored and the element is always required.- See also
-
sortable BooleanSince: ArcGIS Maps SDK for JavaScript 4.16
-
Indicates whether the field column can be sorted.
- Default Value:true
-
textAlign Stringinner
-
Aligns the columns cell content horizontally. Supported values: "start" | "center" | "end".
Possible Values:"start"|"center"|"end"
- Default Value:start
-
visible Boolean
-
Indicates whether the field column is visible.
- Default Value:true
Method Overview
Name | Return Type | Summary | Class |
---|---|---|---|
Adds one or more handles which are to be tied to the lifecycle of the object. more details | Accessor | ||
Boolean | Returns true if a named group of handles exist. more details | Accessor | |
Removes a group of handles owned by the object. more details | Accessor |
Method Details
-
addHandles(handleOrHandles, groupKey)inheritedSince: ArcGIS Maps SDK for JavaScript 4.25
-
Adds one or more handles which are to be tied to the lifecycle of the object. The handles will be removed when the object is destroyed.
// Manually manage handles const handle = reactiveUtils.when( () => !view.updating, () => { wkidSelect.disabled = false; }, { once: true } ); this.addHandles(handle); // Destroy the object this.destroy();
ParametershandleOrHandles WatchHandle|WatchHandle[]Handles marked for removal once the object is destroyed.
groupKey *optionalKey identifying the group to which the handles should be added. All the handles in the group can later be removed with Accessor.removeHandles(). If no key is provided the handles are added to a default group.
-
Since: ArcGIS Maps SDK for JavaScript 4.25
-
Returns true if a named group of handles exist.
ParametergroupKey *optionalA group key.
ReturnsType Description Boolean Returns true
if a named group of handles exist.Example// Remove a named group of handles if they exist. if (obj.hasHandles("watch-view-updates")) { obj.removeHandles("watch-view-updates"); }
-
removeHandles(groupKey)inheritedSince: ArcGIS Maps SDK for JavaScript 4.25
-
Removes a group of handles owned by the object.
ParametergroupKey *optionalA group key or an array or collection of group keys to remove.
Exampleobj.removeHandles(); // removes handles from default group obj.removeHandles("handle-group"); obj.removeHandles("other-handle-group");