Hey Jason,The Edit Widget is using the out-of-box Editor component. The Editor component uses AttributeInspector(http://help.arcgis.com/en/webapi/flex/apiref/com/esri/ags/components/Editor.html#attributeInspector) to show/edit the attribute fields.You can order the fields by using AttributeInspectot.formItemsOrder(http://help.arcgis.com/en/webapi/flex/apiref/com/esri/ags/components/AttributeInspector.html#formItemsOrder) propertyHere's a sample of how it is done using the API(you could do something similar in the Edit Widget's code, In this case the fields are ordered using the fieldInspector) :http://help.arcgis.com/en/webapi/flex/samples/index.html?sample=AttributeInspectorOutsideMapAs far as snapping is concerned, it is not there right now, but we still have plans to add it sometime in a future release.Hope that helps.
// This function establishes the attribute edit environment. // In particular, the order in which fields are presented, // and the labels attached to those fields. Lastly, fields // that should not be user editable are made not visible. private function createFieldInspectors():void { editor.attributeInspector.formItemsOrder = "fieldInspector"; var layer:Layer; var fLayer:FeatureLayer; layer = map.getLayer("Draft Conservation Land"); fLayer = layer as FeatureLayer; var field0:FieldInspector = new FieldInspector(); field0.featureLayer = fLayer; field0.fieldName = "NAME"; field0.label = "Parcel Name"; editor.attributeInspector.fieldInspectors.push(field0); var field0a:FieldInspector = new FieldInspector(); field0a.featureLayer = fLayer; field0a.fieldName = "P_RSIZE"; field0a.label = "Parcel Size (acres)"; editor.attributeInspector.fieldInspectors.push(field0a); var field0b:FieldInspector = new FieldInspector(); field0b.featureLayer = fLayer; field0b.fieldName = "RSIZE"; field0b.label = "Tract Size (acres)"; editor.attributeInspector.fieldInspectors.push(field0b); var field1:FieldInspector = new FieldInspector(); field1.featureLayer = fLayer; field1.fieldName = "PPTYPE"; field1.label = "Primary Protection Type"; editor.attributeInspector.fieldInspectors.push(field1); var field2:FieldInspector = new FieldInspector(); field2.featureLayer = fLayer; field2.fieldName = "PPAGENCY"; field2.label = "Primary Protection Agency"; editor.attributeInspector.fieldInspectors.push(field2); var field3:FieldInspector = new FieldInspector(); field3.featureLayer = fLayer; field3.fieldName = "PROGRAM"; field3.label = "Protection Program"; editor.attributeInspector.fieldInspectors.push(field3); // fields to omit from user editing var fieldx1:FieldInspector = new FieldInspector(); fieldx1.featureLayer = fLayer; fieldx1.fieldName = "TID"; fieldx1.visible = false; editor.attributeInspector.fieldInspectors.push(fieldx1); var fieldx2:FieldInspector = new FieldInspector(); fieldx2.featureLayer = fLayer; fieldx2.fieldName = "PID"; fieldx2.visible = false; editor.attributeInspector.fieldInspectors.push(fieldx2); var fieldx3:FieldInspector = new FieldInspector(); fieldx3.featureLayer = fLayer; fieldx3.fieldName = "CSIZE"; fieldx3.visible = false; editor.attributeInspector.fieldInspectors.push(fieldx3); var fieldx4:FieldInspector = new FieldInspector(); fieldx4.featureLayer = fLayer; fieldx4.fieldName = "P_CSIZE"; fieldx4.visible = false; editor.attributeInspector.fieldInspectors.push(fieldx4); }
<editablelayer> <layername>Sample Layer</layername> <fieldnames>FIELD1,FIELD2</fieldnames> <fieldlabels>Field1,Field2</fieldlabels> <hiddenfields>FIELD3</hiddenfields> </editablelayer>
[Bindable] private var showAttributesText:String; /* MODIFICATION -- setup variables for FieldInspector values from configXML */ private var editableLayerName:String; private var editableLayerFieldNames:Array; private var editableLayerFieldLabels:Array; private var editableLayerHiddenFields:Array; /* MODIFICATION -- END */ private function basewidget_widgetConfigLoaded(event:Event):void { // hide map infowindow if any map.infoWindow.hide(); if (configXML) { // MODIFICATION -- load configuration values for FieldInspector into variables editableLayerName = configXML.editablelayer.layername; if (configXML.editablelayer.fieldnames.length() > 0) { // add field names to array editableLayerFieldNames = []; const tempFieldArray:Array = configXML.editablelayer.fieldnames.split(","); for (var count1:Number = 0; count1 < tempFieldArray.length; count1++) { editableLayerFieldNames.push(tempFieldArray[count1]); } } if (configXML.editablelayer.fieldlabels.length() > 0) { // add field labels to array editableLayerFieldLabels = []; const tempLabelArray:Array = configXML.editablelayer.fieldlabels.split(","); for (var counter2:Number = 0; counter2 < tempLabelArray.length; counter2++) { editableLayerFieldLabels.push(tempLabelArray[counter2]); } } if (configXML.editablelayer.fieldlabels.length() > 0) { // add names of hidden fields to array editableLayerHiddenFields = []; const tempHiddenFieldArray:Array = configXML.editablelayer.hiddenfields.split(","); for (var count3:Number = 0; count3 < tempHiddenFieldArray.length; count3++) { editableLayerHiddenFields.push(tempHiddenFieldArray[count3]); } } // MODIFICATION -- END geometryService.url = configXML.geometryservice; const configToolbarVisible:Boolean = configXML.toolbarvisible == "true"; editor.toolbarVisible = configToolbarVisible; const configToolbarCutVisible:Boolean = configXML.toolbarcutvisible == "true"; editor.toolbarCutVisible = configToolbarCutVisible; const configToolbarMergeVisible:Boolean = configXML.toolbarmergevisible == "true"; editor.toolbarMergeVisible = configToolbarMergeVisible; const configToolbarReshapeVisible:Boolean = configXML.toolbarreshapevisible == "true"; editor.toolbarReshapeVisible = configToolbarReshapeVisible; if (configXML.createoptions.length() > 0) { createOptions.polygonDrawTools = new Array(); createOptions.polylineDrawTools = new Array(); if (configXML.createoptions.polygondrawtools.length() > 0) { const polygonDrawToolsList:Array = configXML.createoptions.polygondrawtools.split(","); for (var i:Number = 0; i < polygonDrawToolsList.length; i++) { createOptions.polygonDrawTools.push(polygonDrawToolsList); } } if (configXML.createoptions.polylinedrawtools.length() > 0) { const polylineDrawToolsList:Array = configXML.createoptions.polylinedrawtools.split(","); for (var j:Number = 0; j < polylineDrawToolsList.length; j++) { createOptions.polylineDrawTools.push(polylineDrawToolsList); } } editor.createOptions = createOptions; } //excludeLayers excludeLayers = []; var layers:XMLList = configXML.excludelayer as XMLList; for (var n:Number = 0; n < layers.length(); n++) { excludeLayers.push(layers.toString()); } //deleteFeatures if (configXML.deletefeatures.length() > 0) { deleteFeatures = configXML.deletefeatures == "true"; } editor.deleteEnabled = attachmentInspector.deleteEnabled = deleteFeatures; //labels if (configXML.labels.attributeslabel[0]) { attributesLabel = configXML.labels.attributeslabel[0]; } if (configXML.labels.attachmentslabel[0]) { attachmentsLabel = configXML.labels.attachmentslabel[0]; } // featurelayernotvisibletext EditWidgetTemplatePickerSkin.featureLayerNotVisibleText = configXML.featurelayernotvisibletext || "feature layer is either not visible or out of scale range"; // showattachmentstext EditWidgetAttributeInspectorSkin.showAttachmentsText = configXML.showattachmentstext || "Show Attachments"; // showattributestext showAttributesText = configXML.showattributestext || "Show Attributes"; } // MODIFICATION -- call function to setup FieldInspector createFieldInspectors(); // MODIFICATION -- END map.infoWindow.addEventListener(Event.CLOSE, infoWindowCloseHandler); ViewerContainer.dispatchEvent(new AppEvent(AppEvent.DATA_OPT_LAYERS, null, getOplayers)); }
// This function establishes the attribute edit environment. // In particular, the order in which fields are presented, // and the labels attached to those fields. Lastly, fields // that should not be user editable are made not visible. private function createFieldInspectors():void { editor.attributeInspector.formItemsOrder = "fieldInspector"; var layer:Layer; var fLayer:FeatureLayer; layer = map.getLayer(editableLayerName); fLayer = layer as FeatureLayer; var field:FieldInspector; var fieldHidden:FieldInspector; // Setup FieldInspectors for visible fields // Assumption: both editableLayerFieldNames and editableLayerFieldLabels will have the same number of elements for (var i:Number = 0; i < editableLayerFieldNames.length; i++) { field = new FieldInspector(); field.featureLayer = fLayer; field.fieldName = editableLayerFieldNames; field.label = editableLayerFieldLabels; editor.attributeInspector.fieldInspectors.push(field); } // Setup FieldInspectors for hidden fields for (var j:Number = 0; j < editableLayerHiddenFields.length; j++) { fieldHidden = new FieldInspector(); fieldHidden.featureLayer = fLayer; fieldHidden.fieldName = editableLayerHiddenFields; fieldHidden.visible = false; editor.attributeInspector.fieldInspectors.push(fieldHidden); } }
<editablelayers> <editablelayer> <layername>Sample Layer</layername> <fieldnames>FIELD1,FIELD2</fieldnames> <fieldlabels>Field1,Field2</fieldlabels> <hiddenfields>FIELD3</hiddenfields> </editablelayer> <editablelayer> <layername>Sample Layer 2</layername> <fieldnames>FIELD1,FIELD2</fieldnames> <fieldlabels>Field1,Field2</fieldlabels> <hiddenfields>FIELD3</hiddenfields> </editablelayer> <editablelayers>
private function basewidget_widgetConfigLoaded(event:Event):void { // hide map infowindow if any map.infoWindow.hide(); if (configXML) { geometryService.url = configXML.geometryservice; const configToolbarVisible:Boolean = configXML.toolbarvisible == "true"; editor.toolbarVisible = configToolbarVisible; const configToolbarCutVisible:Boolean = configXML.toolbarcutvisible == "true"; editor.toolbarCutVisible = configToolbarCutVisible; const configToolbarMergeVisible:Boolean = configXML.toolbarmergevisible == "true"; editor.toolbarMergeVisible = configToolbarMergeVisible; const configToolbarReshapeVisible:Boolean = configXML.toolbarreshapevisible == "true"; editor.toolbarReshapeVisible = configToolbarReshapeVisible; if (configXML.createoptions.length() > 0) { createOptions.polygonDrawTools = new Array(); createOptions.polylineDrawTools = new Array(); if (configXML.createoptions.polygondrawtools.length() > 0) { const polygonDrawToolsList:Array = configXML.createoptions.polygondrawtools.split(","); for (var i:Number = 0; i < polygonDrawToolsList.length; i++) { createOptions.polygonDrawTools.push(polygonDrawToolsList); } } if (configXML.createoptions.polylinedrawtools.length() > 0) { const polylineDrawToolsList:Array = configXML.createoptions.polylinedrawtools.split(","); for (var j:Number = 0; j < polylineDrawToolsList.length; j++) { createOptions.polylineDrawTools.push(polylineDrawToolsList); } } editor.createOptions = createOptions; } //excludeLayers excludeLayers = []; var layers:XMLList = configXML.excludelayer as XMLList; for (var n:Number = 0; n < layers.length(); n++) { excludeLayers.push(layers.toString()); } //deleteFeatures if (configXML.deletefeatures.length() > 0) { deleteFeatures = configXML.deletefeatures == "true"; } editor.deleteEnabled = attachmentInspector.deleteEnabled = deleteFeatures; //labels if (configXML.labels.attributeslabel[0]) { attributesLabel = configXML.labels.attributeslabel[0]; } if (configXML.labels.attachmentslabel[0]) { attachmentsLabel = configXML.labels.attachmentslabel[0]; } /*MODIFICATIONS */ var editablelayers:XMLList = configXML.editablelayers as XMLList; var editableLayerFieldNames:Array; var editableLayerFieldLabels:Array; var editableLayerHiddenFields:Array; for each(var eLayer:XML in editablelayers.children()) { if (eLayer.fieldnames.length() > 0) { // add field names to array editableLayerFieldNames = []; const tempFieldArray:Array = eLayer.fieldnames.split(","); for (var count1:Number = 0; count1 < tempFieldArray.length; count1++) { editableLayerFieldNames.push(tempFieldArray[count1]); } } if (eLayer.fieldlabels.length() > 0) { // add field labels to array editableLayerFieldLabels = []; const tempLabelArray:Array = eLayer.fieldlabels.split(","); for (var counter2:Number = 0; counter2 < tempLabelArray.length; counter2++) { editableLayerFieldLabels.push(tempLabelArray[counter2]); } } if (eLayer.fieldlabels.length() > 0) { // add names of hidden fields to array editableLayerHiddenFields = []; const tempHiddenFieldArray:Array = eLayer.hiddenfields.split(","); for (var count3:Number = 0; count3 < tempHiddenFieldArray.length; count3++) { editableLayerHiddenFields.push(tempHiddenFieldArray[count3]); } } createFieldInspectors(eLayer.layername,editableLayerFieldNames,editableLayerFieldLabels,editableLayerHiddenFields); } // MODIFICATION -- END // featurelayernotvisibletext EditWidgetTemplatePickerSkin.featureLayerNotVisibleText = configXML.featurelayernotvisibletext || "feature layer is either not visible or out of scale range"; // showattachmentstext EditWidgetAttributeInspectorSkin.showAttachmentsText = configXML.showattachmentstext || "Show Attachments"; // showattributestext showAttributesText = configXML.showattributestext || "Show Attributes"; } map.infoWindow.addEventListener(Event.CLOSE, infoWindowCloseHandler); ViewerContainer.dispatchEvent(new AppEvent(AppEvent.DATA_OPT_LAYERS, null, getOplayers)); }
// This function establishes the attribute edit environment. // In particular, the order in which fields are presented, // and the labels attached to those fields. Lastly, fields // that should not be user editable are made not visible. private function createFieldInspectors(editableLayerName:String, editableLayerFieldNames:Array, editableLayerFieldLabels:Array, editableLayerHiddenFields:Array):void { editor.attributeInspector.formItemsOrder = "fieldInspector"; var layer:Layer; var fLayer:FeatureLayer; layer = map.getLayer(editableLayerName); //if layer is null, you entered the wrong name in the layername tag of the specific editablelayer if(!layer) return; fLayer = layer as FeatureLayer; var field:FieldInspector; var fieldHidden:FieldInspector; // Setup FieldInspectors for visible fields // Assumption: both editableLayerFieldNames and editableLayerFieldLabels will have the same number of elements for (var i:Number = 0; i < editableLayerFieldNames.length; i++) { field = new FieldInspector(); field.featureLayer = fLayer; field.fieldName = editableLayerFieldNames; field.label = editableLayerFieldLabels; editor.attributeInspector.fieldInspectors.push(field); } // Setup FieldInspectors for hidden fields for (var j:Number = 0; j < editableLayerHiddenFields.length; j++) { fieldHidden = new FieldInspector(); fieldHidden.featureLayer = fLayer; fieldHidden.fieldName = editableLayerHiddenFields; fieldHidden.visible = false; editor.attributeInspector.fieldInspectors.push(fieldHidden); } }
private function createFieldInspectors():void { var layer:Layer; var fLayer:FeatureLayer; layer = map.getLayer(editableLayerName); fLayer = layer as FeatureLayer; editor.attributeInspector.formItemsOrder = "fieldInspector"; var field:FieldInspector; var fieldHidden:FieldInspector; // Setup FieldInspectors for visible fields // Assumption: both editableLayerFieldNames and editableLayerFieldLabels will have the same number of elements for (var i:Number = 0; i < editableLayerFieldNames.length; i++) { field = new FieldInspector(); field.featureLayer = fLayer; field.fieldName = editableLayerFieldNames; field.label = editableLayerFieldLabels; editor.attributeInspector.fieldInspectors.push(field); } // Setup FieldInspectors for hidden fields for (var j:Number = 0; j < editableLayerHiddenFields.length; j++) { fieldHidden = new FieldInspector(); fieldHidden.featureLayer = fLayer; fieldHidden.fieldName = editableLayerHiddenFields; fieldHidden.visible = false; editor.attributeInspector.fieldInspectors.push(fieldHidden); } }
Greetings all!I'm finding the code samples here to be very useful, especially the extention of functionality controlled by the EditWidget.xml file, but can anyone point me to a good comprehensive review of all the base tags that the EditWidget understands out of the box?- Bob
I'm having difficulty getting this to work for 2.4.I've copied in the code between the /*MODIFICATIONS*/ comments in hbostic's post to the basewidget_widgetConfigLoaded function within the if (configXML) statement, and added the createFieldInspectors function. I assume the rest of the EditWidget.mxml displayed was from a version previous to 2.4.I also added the import com.esri.ags.components.supportClasses.FieldInspector; statement and added the closing slash in the </editablelayers> xml tag, as mentioned by NeoGeo.When I run the widget I see no difference in the widgets behaviour. Can anyone who has managed to get this to work please offer some help? (jvroegop maybe?)Cheers,KarlAttached is my full EditWidget.mxml
サインインしたメンバーは投稿、更新のフォローなどができます。初めてですか?無料アカウントを登録してください。
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.