<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Inserting / deleting records/rows from a non-spatial table in ArcGIS JavaScript Maps SDK Questions</title>
    <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/inserting-deleting-records-rows-from-a-non-spatial/m-p/197709#M18338</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks. I got it working now. It looks and works awesome. By the way the main reason it didn't work was because I wasn't aware of "dojo/text!" requirement. I was putting "templates/featureTableEditor.html" for importing and the compiler was naturally looking for a JS file.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks again!!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 05 Jul 2016 22:55:29 GMT</pubDate>
    <dc:creator>NaciDilekli</dc:creator>
    <dc:date>2016-07-05T22:55:29Z</dc:date>
    <item>
      <title>Inserting / deleting records/rows from a non-spatial table</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/inserting-deleting-records-rows-from-a-non-spatial/m-p/197703#M18332</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I was already able to edit existing records a non-spatial table in my SDE database using FeatureLayer and FeatureTable following this example (&lt;A href="https://developers.arcgis.com/javascript/3/jssamples/fl_paging.html" title="https://developers.arcgis.com/javascript/3/jssamples/fl_paging.html"&gt;Using FeatureTable (no map) | ArcGIS API for JavaScript&lt;/A&gt;) and using the editable property. I would now like to be able to insert (clicking a button would add a blank record at the bottom) and delete selected records from this table. Is this possible? I thought about using applyEdits but I understand it will only accept graphics as parameters (&lt;A href="https://developers.arcgis.com/javascript/3/jsapi/featurelayer-amd.html#applyedits" title="https://developers.arcgis.com/javascript/3/jsapi/featurelayer-amd.html#applyedits"&gt;FeatureLayer | API Reference | ArcGIS API for JavaScript&lt;/A&gt;)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 06 Jun 2016 16:38:27 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/inserting-deleting-records-rows-from-a-non-spatial/m-p/197703#M18332</guid>
      <dc:creator>NaciDilekli</dc:creator>
      <dc:date>2016-06-06T16:38:27Z</dc:date>
    </item>
    <item>
      <title>Re: Inserting / deleting records/rows from a non-spatial table</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/inserting-deleting-records-rows-from-a-non-spatial/m-p/197704#M18333</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I have this same question.&amp;nbsp; I did not see any way to do this using the FeatureTable.&amp;nbsp; Does anyone have any hints or suggestions as to accomplish adding a new row to the FeatureTable (and to delete an existing row)?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Abby&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 24 Jun 2016 17:06:02 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/inserting-deleting-records-rows-from-a-non-spatial/m-p/197704#M18333</guid>
      <dc:creator>AbbyGallegos</dc:creator>
      <dc:date>2016-06-24T17:06:02Z</dc:date>
    </item>
    <item>
      <title>Re: Inserting / deleting records/rows from a non-spatial table</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/inserting-deleting-records-rows-from-a-non-spatial/m-p/197705#M18334</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Have you tried creating a new Graphic object and not update the geometry?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 24 Jun 2016 17:13:52 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/inserting-deleting-records-rows-from-a-non-spatial/m-p/197705#M18334</guid>
      <dc:creator>thejuskambi</dc:creator>
      <dc:date>2016-06-24T17:13:52Z</dc:date>
    </item>
    <item>
      <title>Re: Inserting / deleting records/rows from a non-spatial table</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/inserting-deleting-records-rows-from-a-non-spatial/m-p/197706#M18335</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;There is no built in functionality for this (at least at 3.16).&amp;nbsp; I had a similar need and ended up extending the featureTable dijit and adding the attributeInspector dijit to create a new row.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There is a bunch of extra functionality that you likely won't need, but here is my extended dijit code:&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;define([
&amp;nbsp; 'dijit/Dialog',
&amp;nbsp; 'dijit/form/Button',
&amp;nbsp; "dijit/Toolbar",

&amp;nbsp; "dojo/dom-class",
&amp;nbsp; 'dojo/dom-construct',
&amp;nbsp; 'dojo/_base/array',
&amp;nbsp; 'dojo/_base/declare',
&amp;nbsp; "dojo/string",
&amp;nbsp; 'dojo/_base/lang',
&amp;nbsp; 'dojo/on',
&amp;nbsp; "dojo/query",

&amp;nbsp; 'dojo/text!./templates/featureTableEditor.htm',

&amp;nbsp; 'esri/dijit/AttributeInspector',
&amp;nbsp; 'esri/dijit/FeatureTable',
&amp;nbsp; 'esri/layers/FeatureLayer',
&amp;nbsp; 'esri/tasks/query',
&amp;nbsp; "esri/graphic"
], function(
&amp;nbsp; Dialog,
&amp;nbsp; Button,
&amp;nbsp; Toolbar,

&amp;nbsp; domClass,
&amp;nbsp; domConstruct,
&amp;nbsp; array,
&amp;nbsp; declare,
&amp;nbsp; string,
&amp;nbsp; lang,
&amp;nbsp; on,
&amp;nbsp; dojoQuery,

&amp;nbsp; template,

&amp;nbsp; AttributeInspector,
&amp;nbsp; FeatureTable,
&amp;nbsp; FeatureLayer,
&amp;nbsp; Query,
&amp;nbsp; Graphic
) {
&amp;nbsp; return declare(FeatureTable, {
&amp;nbsp;&amp;nbsp;&amp;nbsp; constructor: function(params, srcNodeRef) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var _this = this;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.editableCustom = (params.editable === true) ? true : false;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; params.editable = false;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.newRecordAttributes = params.newRecordAttributes || {};
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.customHeaderText = params.customHeaderText || null;


&amp;nbsp;&amp;nbsp;&amp;nbsp; },

&amp;nbsp;&amp;nbsp;&amp;nbsp; buildRendering: function () {

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.templateString = template;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.inherited(arguments);
&amp;nbsp;&amp;nbsp;&amp;nbsp; },

&amp;nbsp;&amp;nbsp;&amp;nbsp; postCreate: function() {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var _this = this;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; console.debug('fte',this)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.on('load',this._postGridCreated);

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //add the main class
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; domClass.add(this.domNode, "fwijitsFeatureTable");&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this._i18nStrings.loadingData = "Loading Table Data...";&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this._i18nStrings.gridHeader = '${gridTitle} (${featureSelectedCount}/${featureCount} selected)';
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.inherited(arguments);
&amp;nbsp;&amp;nbsp;&amp;nbsp; },


&amp;nbsp;&amp;nbsp;&amp;nbsp; /////////////////
&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp; Functions that override/enhance functionality in the ESRI featureTable
&amp;nbsp;&amp;nbsp;&amp;nbsp; _refreshGrid: function(ids){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //forces a refresh of the dataStore item
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var _this = this;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this._createStoreFromDataQuery();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var listener = this.grid.on('dgrid-refresh-complete',function(){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; listener.remove();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (ids){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _this.selectRows(ids);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });
&amp;nbsp;&amp;nbsp;&amp;nbsp; },
&amp;nbsp;&amp;nbsp;&amp;nbsp; //override the applyEditsListener
&amp;nbsp;&amp;nbsp;&amp;nbsp; _applyEditsListener: function() {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var listener = on(this.featureLayer, "edits-complete", lang.hitch(this, function(listener) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.emit("edits-complete", listener);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return listener;
&amp;nbsp;&amp;nbsp;&amp;nbsp; },
&amp;nbsp;&amp;nbsp;&amp;nbsp; // End Functions that override/enhance functionality in the ESRI featureTable
&amp;nbsp;&amp;nbsp;&amp;nbsp; ///////////////////////////////////////////////////////////////////////////


&amp;nbsp;&amp;nbsp;&amp;nbsp; startup: function() {

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.inherited(arguments);
&amp;nbsp;&amp;nbsp;&amp;nbsp; },


&amp;nbsp;&amp;nbsp;&amp;nbsp; _updateGridHeaderText: function() {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (this._gridTitleNode){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this._gridTitleNode.innerHTML = string.substitute(this._i18nStrings.gridHeader, {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gridTitle: this.customHeaderText || this.featureLayer.name || this._i18nStrings.untitled,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; featureCount: this.featureCount,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; featureSelectedCount: this._featureSelectedCount
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; },

&amp;nbsp;&amp;nbsp;&amp;nbsp; _postGridCreated: function(){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var _this = this;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //open the row editor on double click
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.grid.on('.dgrid-row:dblclick', function(evt) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _this.grid.clearSelection();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var row = _this.grid.row(evt);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _this.grid.select(row);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _this._editSelection();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //_this._generateRowEditor(row.id);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //_this._toggleLoadingIndicator('block');
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });


&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp; this._setupEditorButtons();

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.on('row-select',function(row){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _this._updateEditorButtons('select');
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.on('row-deselect',function(row){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _this._updateEditorButtons('deselect');
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //this._addEditorButtons();
&amp;nbsp;&amp;nbsp;&amp;nbsp; },

&amp;nbsp;&amp;nbsp;&amp;nbsp; _editSelection: function(){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //currently only handles single row
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this._generateRowEditor(this.selectedRowIds[0]);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this._toggleLoadingIndicator('block');
&amp;nbsp;&amp;nbsp;&amp;nbsp; },

&amp;nbsp;&amp;nbsp;&amp;nbsp; //_deleteSelection: function(){
&amp;nbsp;&amp;nbsp;&amp;nbsp; //
&amp;nbsp;&amp;nbsp;&amp;nbsp; //},

&amp;nbsp;&amp;nbsp;&amp;nbsp; _updateEditorButtons: function(type){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; console.debug('running',this.selectedRowIds.length,type)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var disableButtons = false;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (type == 'deselect' &amp;amp;&amp;amp; this.selectedRowIds.length &amp;lt;= 1){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; disableButtons = true;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this._editSelectionButton.setDisabled(disableButtons);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //this._deleteSelectionButton.setDisabled(disableButtons);
&amp;nbsp;&amp;nbsp;&amp;nbsp; },


&amp;nbsp;&amp;nbsp;&amp;nbsp; _addNew: function() {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var _this = this;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this._toggleLoadingIndicator('block');
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.featureLayer.applyEdits(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'attributes': _this.newRecordAttributes
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }],
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; null,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; null,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function(results) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _this._refreshGrid([results[0].objectId]);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _this._generateRowEditor(results[0].objectId);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; },
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function(err) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; alert('the add did not work');
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );
&amp;nbsp;&amp;nbsp;&amp;nbsp; },


&amp;nbsp;&amp;nbsp;&amp;nbsp; // _addEditorButtons: function() {
&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp; var _this = this;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //
&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp; var addnewButtonContainer = domConstruct.create("div", {
&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp; class: 'esri-feature-table-menu-item',
&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp; style: 'float:left'
&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp; }, this.gridMenuAnchor.domNode, "after");
&amp;nbsp;&amp;nbsp;&amp;nbsp; //
&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp; var addnewButton = new Button({
&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp; label: "Add New"
&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp; }).placeAt(addnewButtonContainer);
&amp;nbsp;&amp;nbsp;&amp;nbsp; //
&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp; addnewButton.on('click', function() {
&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp; _this._toggleLoadingIndicator('block');
&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp; _this.featureLayer.applyEdits(
&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [{
&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'attributes': _this.newRecordAttributes
&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }],
&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; null,
&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; null,
&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function(results) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _this._refreshGrid([results[0].objectId]);
&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _this._generateRowEditor(results[0].objectId);
&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; },
&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function(err) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; alert('the add did not work');
&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp; );
&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp; });
&amp;nbsp;&amp;nbsp;&amp;nbsp; // },

&amp;nbsp;&amp;nbsp;&amp;nbsp; _generateRowEditor: function(rowId) {

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var _this = this;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var changeToCommit = false;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var editFields = [];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; array.forEach(this.featureLayer.fields, function(field) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (_this.hiddenFields.indexOf(field.name) == -1) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; editFields.push({
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldName: field.name,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; isEditable: true,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; label: field.alias
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var attInspector = new AttributeInspector({
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layerInfos: [{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'featureLayer': this.featureLayer,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'isEditable': true,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'fieldInfos': editFields,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; showDeleteButton: false // a custom delete button will be added later
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }, domConstruct.create("div"));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; domClass.add(attInspector.domNode, "fwijitsFeatureTableAttInspector");

console.debug(attInspector)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (_this.saveButton) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _this.saveButton.destroy();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (_this.deleteButton) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _this.deleteButton.destroy();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (this.attrInspDialog) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _this.attrInspDialog.destroy();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var rowQuery = new Query();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rowQuery.where = "ObjectID =" + rowId;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _this.featureLayer.selectFeatures(rowQuery, FeatureLayer.SELECTION_NEW, function(features) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var updateFeature = features[0];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _this.attrInspDialog = new Dialog({
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; title: "Update row",
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; content: attInspector.domNode,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; style: "width: 350px",
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; class:_this.css.dialog,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; onHide: function() {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _this.saveButton.destroy();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _this._toggleLoadingIndicator();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //_this.clearSelection();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _this.attrInspDialog.show();

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //add a delete button
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _this.deleteButton = new Button({
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; label: "Delete"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }, domConstruct.create("div"));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; domConstruct.place(_this.deleteButton.domNode, attInspector.deleteBtn.domNode, "after");
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _this.deleteButton.on("click", function() {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //alert('delete now')
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var apply = _this.featureLayer.applyEdits(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; null,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; null, [updateFeature]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; apply.then(function(res) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _this._refreshGrid();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; },
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function(err) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; alert('delete failed');
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _this.attrInspDialog.hide();

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //add a save button
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _this.saveButton = new Button({
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; label: "Save",
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; disabled: false
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }, domConstruct.create("div"));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; domConstruct.place(_this.saveButton.domNode, attInspector.deleteBtn.domNode, "after");
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _this.saveButton.on("click", function() {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _this.attrInspDialog.hide();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (changeToCommit === true){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; updateFeature.getLayer().applyEdits(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; null, [updateFeature],
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; null,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function(res) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _this._refreshGrid([rowId]);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; },
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function(err) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; alert('the update did not work');
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; attInspector.on("attribute-change", function(attr) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //_this.saveButton.setDisabled(false);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; changeToCommit = true;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; updateFeature.attributes[attr.fieldName] = attr.fieldValue;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });
&amp;nbsp;&amp;nbsp;&amp;nbsp; },

&amp;nbsp;&amp;nbsp;&amp;nbsp; //this is a work in progress
&amp;nbsp;&amp;nbsp;&amp;nbsp; resizeColumnsToContent: function(newSize) {

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (var i in this.grid.columns) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var col = this.grid.columns&lt;I&gt;;&lt;/I&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (col.hidden == false){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var fieldName = col.field;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var fieldAlias = col.label;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var newWidth = this._getColumnWidth(fieldName,fieldAlias);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.grid.resizeColumnWidth(col.id, newWidth);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; },

&amp;nbsp;&amp;nbsp;&amp;nbsp; _stripTags: function(HTML) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var tmp = document.createElement("DIV");
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tmp.innerHTML = HTML;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return tmp.textContent || tmp.innerText;
&amp;nbsp;&amp;nbsp;&amp;nbsp; },

&amp;nbsp;&amp;nbsp;&amp;nbsp; _replaceURLWithHTMLLinks: function(text) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var t = text + "";
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&amp;amp;@#\/%?=~_|!:,.;]*[-A-Z0-9+&amp;amp;@#\/%=~_|])/ig;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return t.replace(exp, "&amp;lt;a href='$1' target='blank'&amp;gt;View Page&amp;lt;/a&amp;gt;");
&amp;nbsp;&amp;nbsp;&amp;nbsp; },

&amp;nbsp;&amp;nbsp;&amp;nbsp; _getColumnWidth: function(fieldName, fieldAlias, data) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var _this = this;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var longestDataField = "-";

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //fetch the field domain
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var domain = null;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; array.forEach(this.featureLayer.fields,function(fieldInfo){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (fieldInfo.name == fieldName &amp;amp;&amp;amp; fieldInfo.domain){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; domain = fieldInfo.domain;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; array.forEach(this.grid.store.data, function(item) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; console.debug('&amp;nbsp; ',item)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var cellData;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (item.attributes) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cellData = item.attributes[fieldName];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cellData = item[fieldName];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //handle domains
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (domain &amp;amp;&amp;amp; domain.codedValues){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var cellText = '';
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; array.forEach(domain.codedValues,function(codedValue){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (codedValue.code == cellData){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cellText = codedValue.name;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (cellText !== ''){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cellData = cellText;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; console.debug('&amp;nbsp; ',cellData)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //account for empty cells
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cellData = (!cellData || cellData === null || cellData === ' ' || cellData === '') ? "-" : cellData;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Strip any html tags
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (typeof cellData === 'string' &amp;amp;&amp;amp; cellData.indexOf('&amp;lt;a') &amp;gt; -1) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cellData = _this._stripTags(cellData);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else if (typeof cellData === 'string' &amp;amp;&amp;amp; cellData.indexOf('http') &amp;gt; -1 &amp;amp;&amp;amp; cellData.indexOf('&amp;lt;a') == -1) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cellData = _this._stripTags(_this._replaceURLWithHTMLLinks(cellData));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //check to see if the current fld is longer than previous flds
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (cellData.length &amp;gt; longestDataField.length) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; longestDataField = cellData;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //calculate header and cell string length
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var resizeFactor = 1.5;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var maxColumnWidth = 30;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var cellLen = longestDataField.length / resizeFactor;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var hdrLen = fieldAlias.length &amp;lt;= 10 ? fieldAlias.length : fieldAlias.length / 1.3;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var columnWidth = hdrLen &amp;gt; cellLen ? hdrLen : cellLen;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; columnWidth = columnWidth &amp;lt; 30 ? columnWidth : maxColumnWidth;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return columnWidth*10;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp; });
});&lt;/PRE&gt;&lt;P&gt;The template:&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&amp;lt;div class="${baseClass}"&amp;gt;
&amp;nbsp; &amp;lt;div id="${gridBorderContainerId}" class="esri-feature-table-border-container" data-dojo-attach-point="_gridBorderContainer" data-dojo-type="dijit.layout.BorderContainer" gutters="false"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div id="${gridHeaderId}" class="esri-feature-table-content-pane esri-feature-table-menu" data-dojo-attach-point="_gridHeaderNode" data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region: 'top'"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div class="esri-feature-table-menu-item esri-feature-table-loading-indicator" data-dojo-attach-point="_gridLoadingIndicatorNode" style="display:none;"&amp;gt;&amp;lt;/div&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div class="esri-feature-table-menu-item esri-feature-table-title" data-dojo-attach-point="_gridTitleNode"&amp;gt;&amp;lt;/div&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div class="esri-feature-table-menu-item esri-feature-table-closer-container"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;a class="esri-feature-table-closer toggleOpened" data-dojo-attach-point="tableCloseButton" href="JavaScript:void(0);" title="Hide Table"&amp;gt;&amp;lt;/a&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div data-dojo-attach-point="_menuNode" class="esri-feature-table-menu-item esri-feature-table-menu-options"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div id="${gridMenuNodeId}"&amp;gt;&amp;lt;/div&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div id="${gridContentPaneId}" class="esri-feature-table-content-pane" data-dojo-attach-point="_gridContentPane" data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region: 'center'"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div id="${gridId}" class="esri-feature-table-grid" data-dojo-attach-point="_gridNode"&amp;gt;&amp;lt;/div&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div class="esri-feature-table-editor-toolbar" data-dojo-attach-point="_gridEditToolbarPane" data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region: 'bottom'"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div&amp;nbsp; data-dojo-attach-point="_gridEditorToolbar" data-dojo-type="dijit/Toolbar"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div data-dojo-type="dijit/form/Button" data-dojo-attach-event="onClick:_addNew" data-dojo-props="iconClass:'fwijitsFeatureTableEditorIcon fwijitsFeatureTableAdd', showLabel:false"&amp;gt;Add&amp;lt;/div&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div data-dojo-type="dijit/form/Button" data-dojo-attach-point="_editSelectionButton" data-dojo-attach-event="onClick:_editSelection" data-dojo-props="iconClass:'fwijitsFeatureTableEditorIcon fwijitsFeatureTableEdit', showLabel:false, disabled:true"&amp;gt;Edit Selected&amp;lt;/div&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--div data-dojo-type="dijit/form/Button" data-dojo-attach-point="_deleteSelectionButton" data-dojo-attach-event="onClick:_deleteSelection" data-dojo-props="iconClass:'fwijitsFeatureTableEditorIcon fwijitsFeatureTableDelete', showLabel:false, disabled:true"&amp;gt;Delete Selected&amp;lt;/div--&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;
&amp;nbsp; &amp;lt;/div&amp;gt;

&amp;lt;/div&amp;gt;&lt;/PRE&gt;&lt;P&gt; The css:&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;.dgrid {
&amp;nbsp;&amp;nbsp;&amp;nbsp; font-size: 9px;
}
.fwijitsFeatureTableMapSelectedRows .dgrid-selected {
&amp;nbsp;&amp;nbsp;&amp;nbsp; background-color: #00ffff;
}

.fwijitsFeatureTableMapSelectedRows .dgrid-row:hover {
&amp;nbsp;&amp;nbsp;&amp;nbsp; border: 2px solid #ff00ff;
&amp;nbsp;&amp;nbsp;&amp;nbsp; background-color: transparent;
}
.fwijitsFeatureTableMapSelectedRows .dgrid-selected:hover {
&amp;nbsp;&amp;nbsp;&amp;nbsp; border: 2px solid #ff00ff;
&amp;nbsp;&amp;nbsp;&amp;nbsp; background-color: #00ffff;
}

.fwijitsFeatureTableAttInspector .atiLayerName {
&amp;nbsp; display:none;
}

.esri-feature-table-editor-toolbar{

}

.fwijitsFeatureTable .esri-feature-table-closer-container{
&amp;nbsp; display:none;
}

.fwijitsFeatureTableAttInspector .atiAttributes .dijitButtonNode{
&amp;nbsp; border-radius:0px !important;
}
.fwijitsFeatureTableAttInspector .atiField{
&amp;nbsp; padding:0px !important;
&amp;nbsp; margin:2px;
}

.fwijitsFeatureTableEditorIcon {
&amp;nbsp;&amp;nbsp;&amp;nbsp; background-image: url('images/featureTableEditor/editorIconsEnabled.png'); /* editor icons sprite image for the enabled state */
&amp;nbsp;&amp;nbsp;&amp;nbsp; background-repeat: no-repeat;
&amp;nbsp;&amp;nbsp;&amp;nbsp; width: 18px;
&amp;nbsp;&amp;nbsp;&amp;nbsp; height: 18px;
&amp;nbsp;&amp;nbsp;&amp;nbsp; text-align: center;
}
.dijitDisabled .fwijitsFeatureTableEditorIcon {
&amp;nbsp;&amp;nbsp;&amp;nbsp; background-image: url('images/featureTableEditor/editorIconsDisabled.png'); /* editor icons sprite image for the disabled state */
}

.fwijitsFeatureTableAdd { background-position: 0; }
.fwijitsFeatureTableEdit { background-position: -18px; }
.fwijitsFeatureTableDelete { background-position: -36px; }&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;At the very least, the javascript code should give you a start.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 09:52:25 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/inserting-deleting-records-rows-from-a-non-spatial/m-p/197706#M18335</guid>
      <dc:creator>BillDaigle</dc:creator>
      <dc:date>2021-12-11T09:52:25Z</dc:date>
    </item>
    <item>
      <title>Re: Inserting / deleting records/rows from a non-spatial table</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/inserting-deleting-records-rows-from-a-non-spatial/m-p/197707#M18336</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you very much. I am trying to first use your code by integrating into the example at &lt;A href="https://developers.arcgis.com/javascript/3/jssamples/fl_paging.html" title="https://developers.arcgis.com/javascript/3/jssamples/fl_paging.html" rel="nofollow noopener noreferrer" target="_blank"&gt;Using FeatureTable (no map) | ArcGIS API for JavaScript 3.17&lt;/A&gt; , but so far I have been unsuccessful. I am probably doing some very basic mistakes but here is what I am doing. Here is my version of code (in a file text.html) and the folder structure.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;


&amp;lt;head&amp;gt;
&amp;nbsp; &amp;lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"&amp;gt;
&amp;nbsp; &amp;lt;title&amp;gt;FeatureTable without map&amp;lt;/title&amp;gt;
&amp;nbsp; &amp;lt;link rel="stylesheet" href="https://community.esri.com//js.arcgis.com/3.17/dijit/themes/claro/claro.css"&amp;gt;
&amp;nbsp; &amp;lt;link rel="stylesheet" href="https://community.esri.com//js.arcgis.com/3.17/esri/css/esri.css"&amp;gt;
&amp;nbsp; &amp;lt;link rel="stylesheet" href="https://community.esri.com//js.arcgis.com/3.17/esri/css/esri.css"&amp;gt;
&amp;nbsp; &amp;lt;script src="//js.arcgis.com/3.17/"&amp;gt;&amp;lt;/script&amp;gt;
&amp;nbsp; &amp;lt;script type="text/javascript"&amp;gt;
&amp;nbsp; dojoConfig = {
&amp;nbsp;&amp;nbsp;&amp;nbsp; parseOnLoad: true,
&amp;nbsp;&amp;nbsp;&amp;nbsp; packages: [{
&amp;nbsp;&amp;nbsp;&amp;nbsp; "name": "newModule",
&amp;nbsp;&amp;nbsp;&amp;nbsp; "location": location.pathname.replace(/\/[^/]+$/, "") + "/module"
&amp;nbsp; }]
};&amp;nbsp; 

&amp;nbsp; &amp;lt;/script&amp;gt;
&amp;nbsp; 
&amp;nbsp; &amp;lt;style&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; html, 
&amp;nbsp;&amp;nbsp;&amp;nbsp; body, 
&amp;nbsp;&amp;nbsp;&amp;nbsp; #myTableNode {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; width:100%;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; height:100%;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; margin:0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; padding:0;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; #top, 
&amp;nbsp;&amp;nbsp;&amp;nbsp; #bot {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; margin: 0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; padding: 0;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp; &amp;lt;/style&amp;gt;


&amp;nbsp; &amp;lt;script&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var map;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //console.log(location.pathname.replace(/\/[^/]+$/, "") + "/module");


&amp;nbsp;&amp;nbsp;&amp;nbsp; require([
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "esri/layers/FeatureLayer",
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "esri/dijit/FeatureTable",
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "newModule/featureTableEditor",


&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "dojo/dom",
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "dojo/parser",
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "dojo/ready",
&amp;nbsp;&amp;nbsp;&amp;nbsp; ], function (
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FeatureLayer, FeatureTable,featureTableEditor,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dom, parser, ready&amp;nbsp;&amp;nbsp;&amp;nbsp; ) {


&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; parser.parse();


&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ready(function(){


&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create the feature layer
&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var myFeatureLayer = new FeatureLayer("&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fservices.arcgis.com%2FV6ZHFr6zdgNZuVG0%2Farcgis%2Frest%2Fservices%2Fcalifornia_census_blocks%2FFeatureServer%2F0" target="_blank"&gt;https://services.arcgis.com/V6ZHFr6zdgNZuVG0/arcgis/rest/services/california_census_blocks/FeatureServer/0&lt;/A&gt;&lt;SPAN&gt;", {&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mode: FeatureLayer.MODE_ONDEMAND,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; outFields:&amp;nbsp; ["NAME","GEOID","MTFCC","ALAND","AWATER"],
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; visible: true,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id: "fLayer"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });


&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; myTable = new featureTableEditor({
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; featureLayer : myFeatureLayer,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; showGridMenu: false,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hiddenFields: ["FID","C_Seq","Street"]&amp;nbsp; // field that end-user can show, but is hidden on startup
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }, "myTableNode");


&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; myTable.startup();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });
&amp;nbsp;&amp;nbsp;&amp;nbsp; });
&amp;nbsp; &amp;lt;/script&amp;gt;
&amp;lt;/head&amp;gt;


&amp;lt;body class="claro esri"&amp;gt;
&amp;nbsp; &amp;lt;div data-dojo-type="dijit/layout/BorderContainer" data-dojo-props="design:'headline', gutters: false" style="width:100%; height:100%;"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div id="top" data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'top'"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;p&amp;gt;&amp;lt;em&amp;gt;The FeatureTable dijit supports tables with lots of features, with the table growing as you scroll.&amp;lt;/em&amp;gt;&amp;lt;/p&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div id="bot" data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'center'"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div id="myTableNode"&amp;gt;&amp;lt;/div&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;
&amp;nbsp; &amp;lt;/div&amp;gt;
&amp;lt;/body&amp;gt;


&amp;lt;/html&amp;gt; 


















&lt;/PRE&gt;&lt;P&gt;&lt;IMG alt="folderstructure.png" class="image-1 jive-image" src="https://community.esri.com/legacyfs/online/210363_folderstructure.png" style="height: auto;" /&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 09:52:28 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/inserting-deleting-records-rows-from-a-non-spatial/m-p/197707#M18336</guid>
      <dc:creator>NaciDilekli</dc:creator>
      <dc:date>2021-12-11T09:52:28Z</dc:date>
    </item>
    <item>
      <title>Re: Inserting / deleting records/rows from a non-spatial table</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/inserting-deleting-records-rows-from-a-non-spatial/m-p/197708#M18337</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I don't think your too far off.&amp;nbsp; Here are a couple things I notice right off the bat...&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;I haven't tested it with 3.17.&amp;nbsp; I did override some private functions, so there may be breaking changes at 3.17. It should work with 3.16.&lt;/LI&gt;&lt;LI&gt;You will need to add a link to the stylesheet -- the dijit won't load it by default.&lt;/LI&gt;&lt;LI&gt; Also, attached are the 2 sprite images referenced in the stylesheet. &lt;/LI&gt;&lt;/UL&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 05 Jul 2016 21:05:49 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/inserting-deleting-records-rows-from-a-non-spatial/m-p/197708#M18337</guid>
      <dc:creator>BillDaigle</dc:creator>
      <dc:date>2016-07-05T21:05:49Z</dc:date>
    </item>
    <item>
      <title>Re: Inserting / deleting records/rows from a non-spatial table</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/inserting-deleting-records-rows-from-a-non-spatial/m-p/197709#M18338</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks. I got it working now. It looks and works awesome. By the way the main reason it didn't work was because I wasn't aware of "dojo/text!" requirement. I was putting "templates/featureTableEditor.html" for importing and the compiler was naturally looking for a JS file.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks again!!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 05 Jul 2016 22:55:29 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/inserting-deleting-records-rows-from-a-non-spatial/m-p/197709#M18338</guid>
      <dc:creator>NaciDilekli</dc:creator>
      <dc:date>2016-07-05T22:55:29Z</dc:date>
    </item>
    <item>
      <title>Re: Inserting / deleting records/rows from a non-spatial table</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/inserting-deleting-records-rows-from-a-non-spatial/m-p/197710#M18339</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Excellent.  Glad to hear it works for you.  Were you able to test it on 3.17?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 06 Jul 2016 14:16:44 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/inserting-deleting-records-rows-from-a-non-spatial/m-p/197710#M18339</guid>
      <dc:creator>BillDaigle</dc:creator>
      <dc:date>2016-07-06T14:16:44Z</dc:date>
    </item>
    <item>
      <title>Re: Inserting / deleting records/rows from a non-spatial table</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/inserting-deleting-records-rows-from-a-non-spatial/m-p/197711#M18340</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I've just tried, and it doesn't work. I am getting this error:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Error: uniqName_0 template:gridBorderContainerId&lt;/P&gt;&lt;P&gt;Stack trace:&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;.cache["dijit/_TemplatedMixin"]/&amp;lt;/e&amp;lt;._stringRepl/&amp;lt;@&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.17%2F%3A372%3A222" rel="nofollow" target="_blank"&gt;https://js.arcgis.com/3.17/:372:222&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;.cache["dojo/_base/lang"]/&amp;lt;/e.hitch/&amp;lt;@&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.17%2F%3A63%3A207" rel="nofollow" target="_blank"&gt;https://js.arcgis.com/3.17/:63:207&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;.cache["dojo/string"]/&amp;lt;/q.substitute/&amp;lt;@&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.17%2F%3A376%3A308" rel="nofollow" target="_blank"&gt;https://js.arcgis.com/3.17/:376:308&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;.cache["dojo/string"]/&amp;lt;/q.substitute@&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.17%2F%3A376%3A154" rel="nofollow" target="_blank"&gt;https://js.arcgis.com/3.17/:376:154&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;.cache["dijit/_TemplatedMixin"]/&amp;lt;/e&amp;lt;._stringRepl@&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.17%2F%3A372%3A105" rel="nofollow" target="_blank"&gt;https://js.arcgis.com/3.17/:372:105&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;.cache["dijit/_TemplatedMixin"]/&amp;lt;/e&amp;lt;.buildRendering@&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.17%2F%3A373%3A177" rel="nofollow" target="_blank"&gt;https://js.arcgis.com/3.17/:373:177&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;m@&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.17%2F%3A155%3A342" rel="nofollow" target="_blank"&gt;https://js.arcgis.com/3.17/:155:342&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;.buildRendering@&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=http%3A%2F%2F127.0.0.1%3A8020%2FextendFeatureTable%2Fmodule%2FfeatureTableEditor.js%3A60%3A9" rel="nofollow" target="_blank"&gt;http://127.0.0.1:8020/extendFeatureTable/module/featureTableEditor.js:60:9&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;.cache["dijit/_WidgetBase"]/&amp;lt;/f&amp;lt;.create@&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.17%2F%3A350%3A13" rel="nofollow" target="_blank"&gt;https://js.arcgis.com/3.17/:350:13&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;.cache["dijit/_WidgetBase"]/&amp;lt;/f&amp;lt;.postscript@&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.17%2F%3A348%3A470" rel="nofollow" target="_blank"&gt;https://js.arcgis.com/3.17/:348:470&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;d/&amp;lt;@&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.17%2F%3A157%3A442" rel="nofollow" target="_blank"&gt;https://js.arcgis.com/3.17/:157:442&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;@&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=http%3A%2F%2F127.0.0.1%3A8020%2FextendFeatureTable%2Ftest.html%3A68%3A19" rel="nofollow" target="_blank"&gt;http://127.0.0.1:8020/extendFeatureTable/test.html:68:19&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;.cache["dojo/ready"]/&amp;lt;/b.addOnLoad/f&amp;lt;@&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.17%2F%3A150%3A250" rel="nofollow" target="_blank"&gt;https://js.arcgis.com/3.17/:150:250&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;.cache["dojo/ready"]/&amp;lt;/e@&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.17%2F%3A149%3A503" rel="nofollow" target="_blank"&gt;https://js.arcgis.com/3.17/:149:503&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;q.signal/&amp;lt;@&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.17%2F%3A14%3A445" rel="nofollow" target="_blank"&gt;https://js.arcgis.com/3.17/:14:445&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;a@&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.17%2F%3A10%3A295" rel="nofollow" target="_blank"&gt;https://js.arcgis.com/3.17/:10:295&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;q.signal@&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.17%2F%3A14%3A417" rel="nofollow" target="_blank"&gt;https://js.arcgis.com/3.17/:14:417&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;ja@&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.17%2F%3A28%3A166" rel="nofollow" target="_blank"&gt;https://js.arcgis.com/3.17/:28:166&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;ga@&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.17%2F%3A28%3A198" rel="nofollow" target="_blank"&gt;https://js.arcgis.com/3.17/:28:198&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;qa/s@&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.17%2F%3A30%3A434" rel="nofollow" target="_blank"&gt;https://js.arcgis.com/3.17/:30:434&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;q.injectUrl/g&amp;lt;@&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.17%2F%3A35%3A149" rel="nofollow" target="_blank"&gt;https://js.arcgis.com/3.17/:35:149&lt;/A&gt;&lt;/P&gt;&lt;P&gt; 3.17:36:486&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have a hard time reading these errors. I suppose the error is triggered by the "this.inherited(arguments);" line in the buildRendering function inside featureTableEditor&amp;nbsp;&amp;nbsp; Can you tell what this is about? &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 06 Jul 2016 14:54:23 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/inserting-deleting-records-rows-from-a-non-spatial/m-p/197711#M18340</guid>
      <dc:creator>NaciDilekli</dc:creator>
      <dc:date>2016-07-06T14:54:23Z</dc:date>
    </item>
    <item>
      <title>Re: Inserting / deleting records/rows from a non-spatial table</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/inserting-deleting-records-rows-from-a-non-spatial/m-p/197712#M18341</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;It looks like they modified the template quite a bit at 3.17.&amp;nbsp; Try using the following html.&amp;nbsp; I haven't tried this myself yet.&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&amp;lt;div&amp;gt;
&amp;nbsp; &amp;lt;div class="esri-feature-table-border-container" data-dojo-attach-point= "_gridBorderContainer" data-dojo-type="dijit.layout.BorderContainer" gutters="false"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div class="esri-feature-table-content-pane esri-feature-table-menu" data-dojo-attach-point= "_gridHeaderNode" data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region: 'top'"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div class="esri-feature-table-menu-item esri-feature-table-loading-indicator" data-dojo-attach-point= "_gridLoadingIndicatorNode" style="display:none;"&amp;gt;&amp;lt;/div&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div class="esri-feature-table-menu-item esri-feature-table-title" data-dojo-attach-point= "_gridTitleNode"&amp;gt;&amp;lt;/div&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div class="esri-feature-table-menu-item esri-feature-table-closer-container"&amp;gt;&amp;lt;/div&amp;gt;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div data-dojo-attach-point= "_menuNode" class="esri-feature-table-menu-item esri-feature-table-menu-options"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div data-dojo-attach-point= "_gridMenuNode"&amp;gt;&amp;lt;/div&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div class="esri-feature-table-content-pane" data-dojo-attach-point= "_gridContentPane" data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region: 'center'"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div class="esri-feature-table-grid" data-dojo-attach-point="_gridNode"&amp;gt;&amp;lt;/div&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- custom editor tools section --&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div class="esri-feature-table-editor-toolbar" data-dojo-attach-point="_gridEditToolbarPane" data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region: 'bottom'"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div&amp;nbsp; data-dojo-attach-point="_gridEditorToolbar" data-dojo-type="dijit/Toolbar"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div data-dojo-type="dijit/form/Button" data-dojo-attach-event="onClick:_addNew" data-dojo-props="iconClass:'fwijitsFeatureTableEditorIcon fwijitsFeatureTableAdd', showLabel:false"&amp;gt;Add&amp;lt;/div&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div data-dojo-type="dijit/form/Button" data-dojo-attach-point="_editSelectionButton" data-dojo-attach-event="onClick:_editSelection" data-dojo-props="iconClass:'fwijitsFeatureTableEditorIcon fwijitsFeatureTableEdit', showLabel:false, disabled:true"&amp;gt;Edit Selected&amp;lt;/div&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--div data-dojo-type="dijit/form/Button" data-dojo-attach-point="_deleteSelectionButton" data-dojo-attach-event="onClick:_deleteSelection" data-dojo-props="iconClass:'fwijitsFeatureTableEditorIcon fwijitsFeatureTableDelete', showLabel:false, disabled:true"&amp;gt;Delete Selected&amp;lt;/div--&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- end custom editor tools section --&amp;gt;
&amp;nbsp; &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 09:52:31 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/inserting-deleting-records-rows-from-a-non-spatial/m-p/197712#M18341</guid>
      <dc:creator>BillDaigle</dc:creator>
      <dc:date>2021-12-11T09:52:31Z</dc:date>
    </item>
    <item>
      <title>Re: Inserting / deleting records/rows from a non-spatial table</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/inserting-deleting-records-rows-from-a-non-spatial/m-p/197713#M18342</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;This does display the table fine, but then the add / update / delete operations do not work. For add it gives "the add did not work", for update it gives "the update did not work" (the popups) and for delete it gives this error on the console:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;init.js:113 TypeError: this._createStoreFromDataQuery is not a function(…) "TypeError: this._createStoreFromDataQuery is not a function&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at _refreshGrid (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=http%3A%2F%2F127.0.0.1%3A8020%2FextendFeatureTable%2Fmodule%2FfeatureTableEditor.js%3A80%3A12" rel="nofollow" target="_blank"&gt;http://127.0.0.1:8020/extendFeatureTable/module/featureTableEditor.js:80:12&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=http%3A%2F%2F127.0.0.1%3A8020%2FextendFeatureTable%2Fmodule%2FfeatureTableEditor.js%3A285%3A19" rel="nofollow" target="_blank"&gt;http://127.0.0.1:8020/extendFeatureTable/module/featureTableEditor.js:285:19&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at a (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.17%2Finit.js%3A660%3A469" rel="nofollow" target="_blank"&gt;https://js.arcgis.com/3.17/init.js:660:469&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at c (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.17%2Finit.js%3A103%3A393" rel="nofollow" target="_blank"&gt;https://js.arcgis.com/3.17/init.js:103:393&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at d (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.17%2Finit.js%3A103%3A182" rel="nofollow" target="_blank"&gt;https://js.arcgis.com/3.17/init.js:103:182&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at resolve.callback (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.17%2Finit.js%3A105%3A10" rel="nofollow" target="_blank"&gt;https://js.arcgis.com/3.17/init.js:105:10&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Object._resDfd (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.17%2Finit.js%3A661%3A122" rel="nofollow" target="_blank"&gt;https://js.arcgis.com/3.17/init.js:661:122&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at _resolve (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.17%2Finit.js%3A1937%3A79" rel="nofollow" target="_blank"&gt;https://js.arcgis.com/3.17/init.js:1937:79&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at _editHandler (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.17%2Finit.js%3A1954%3A397" rel="nofollow" target="_blank"&gt;https://js.arcgis.com/3.17/init.js:1954:397&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Object.load (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fjs.arcgis.com%2F3.17%2Finit.js%3A1912%3A132" rel="nofollow" target="_blank"&gt;https://js.arcgis.com/3.17/init.js:1912:132&lt;/A&gt;&lt;SPAN&gt;)"&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 06 Jul 2016 16:08:04 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/inserting-deleting-records-rows-from-a-non-spatial/m-p/197713#M18342</guid>
      <dc:creator>NaciDilekli</dc:creator>
      <dc:date>2016-07-06T16:08:04Z</dc:date>
    </item>
    <item>
      <title>Re: Inserting / deleting records/rows from a non-spatial table</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/inserting-deleting-records-rows-from-a-non-spatial/m-p/197714#M18343</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Looks like they changed some internal functions (anything function with an underscore should be referenced at your own risk) that I am referencing in the “_refreshGrid” function. Their version of the editor updates the grid, then applies the changes to the feature layer.  My version edits the feature layer directly (using the attribute editor), then forces a refresh on the data.  Based on the 3.17 documentation, it looks like they may have added a refresh function.  You might try replacing this line:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;this._createStoreFromDataQuery();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;with:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;this.refresh();&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 06 Jul 2016 17:03:35 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/inserting-deleting-records-rows-from-a-non-spatial/m-p/197714#M18343</guid>
      <dc:creator>BillDaigle</dc:creator>
      <dc:date>2016-07-06T17:03:35Z</dc:date>
    </item>
    <item>
      <title>Re: Inserting / deleting records/rows from a non-spatial table</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/inserting-deleting-records-rows-from-a-non-spatial/m-p/197715#M18344</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I tried the refresh() function before, and it never refreshed the data as I wanted it, and it doesn't work in this instance either. I think for now I will work with the 3.16 version, and try to understand your code to migrate it to 3.17 and/or 4.0 in the future. I still need to understand some of the fundamentals such as extending classes as you did. Are there any resources on extending the ESRI API that you are aware of?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 06 Jul 2016 17:32:24 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/inserting-deleting-records-rows-from-a-non-spatial/m-p/197715#M18344</guid>
      <dc:creator>NaciDilekli</dc:creator>
      <dc:date>2016-07-06T17:32:24Z</dc:date>
    </item>
  </channel>
</rss>

