Solved! Go to Solution.
var editSignSupports = new esri.layers.FeatureLayer("https://myserver/pubgis/rest/services/Signs/Signs2/FeatureServer/1", { id: 'editSignSupports', //always assign the layer id to all layers of all types; never let the api do it mode: esri.layers.FeatureLayer.MODE_ONDEMAND, outFields: ["*"] }); dojo.connect(editSignSupports, 'onEditsComplete', function(result) { var add = result[0]; if (add !== undefined && add.success) { //check to see that add was successful and in fact this was an add and not an update or delete dojo.forEach(editSignSupports.graphics, function(graphic) { //iterate through feature layer graphics if (graphic.attributes.OBJECTID === add.objectId) { graphic.attributes.SOME_OTHER_FIELD = add.objectId; //set your other field with object id editSignSupports.applyEdits(null, [graphic], null, function (response) { //apply edits to object //console.log(response); }, function (error) { //console.log(error) }); return; //stop loop once the only feature with that object id has been updated } }) } });
//create "feature" app.editLayer.applyEdits([feature], null, null, function (response) { console.log('feature added'); feature.attributes.SOME_OTHER_FIELD = response.addResults[0].objectId; app.editLayer.applyEdits(null, [feature], null, function (response) { console.log('feature updated'); }, function (error) { console.log(error) }) }, function (error) { console.log(error) });
var editSignSupports = new esri.layers.FeatureLayer("https://myserver/pubgis/rest/services/Signs/Signs2/FeatureServer/1", { mode: esri.layers.FeatureLayer.MODE_ONDEMAND, outFields: ["*"] }); mapLayers.push(editSignSupports); legendLayers.push({layer:editSignSupports,title:'SignSupport'});
function initEditing(results) { var featureLayerInfos = dojo.map(results, function(result) { return { 'featureLayer': result.layer }; }); editorSettings = { map: map, layerInfos: featureLayerInfos }; //when the editor tab is clicked we'll initialize the editor var showHandler = dojo.connect(dijit.byId('editTab'),'onShow',function(evt){ //disconnect the handler so the editor is only initialized once dojo.disconnect(showHandler); var params = { settings: editorSettings }; var editorWidget = new esri.dijit.editing.Editor(params, 'editorDiv'); editorWidget.startup(); }); }
var editSignSupports = new esri.layers.FeatureLayer("https://myserver/pubgis/rest/services/Signs/Signs2/FeatureServer/1", { id: 'editSignSupports', //always assign the layer id to all layers of all types; never let the api do it mode: esri.layers.FeatureLayer.MODE_ONDEMAND, outFields: ["*"] }); dojo.connect(editSignSupports, 'onEditsComplete', function(result) { var add = result[0]; if (add !== undefined && add.success) { //check to see that add was successful and in fact this was an add and not an update or delete dojo.forEach(editSignSupports.graphics, function(graphic) { //iterate through feature layer graphics if (graphic.attributes.OBJECTID === add.objectId) { graphic.attributes.SOME_OTHER_FIELD = add.objectId; //set your other field with object id editSignSupports.applyEdits(null, [graphic], null, function (response) { //apply edits to object //console.log(response); }, function (error) { //console.log(error) }); return; //stop loop once the only feature with that object id has been updated } }) } });
The callback on applyEdits returns the objectId of the new feature.
In the add feature callback function update the attribute and send it back for an update.//create "feature" app.editLayer.applyEdits([feature], null, null, function (response) { console.log('feature added'); feature.attributes.SOME_OTHER_FIELD = response.addResults[0].objectId; app.editLayer.applyEdits(null, [feature], null, function (response) { console.log('feature updated'); }, function (error) { console.log(error) }) }, function (error) { console.log(error) });
Thanks! This helped me out a lot with a project I am working on!