2017-01-03 1 views
0

L'exigence consiste à ajouter une nouvelle fonctionnalité à partir du sélecteur de modèle, mais sans l'appliquer, puis-je afficher l'inspecteur d'attributs que enregistrer la fonctionnalité. Ce modèle sélectionné est ensuite sélectionné pour placer les points sur la carte plutôt que d'ouvrir l'inspecteur d'attributs en le sélectionnant.Afficher l'inspecteur d'attributs sans enregistrer une nouvelle fonctionnalité

selectedTemplate.featureLayer.applyEdits([newGraphic], null, null); 

Exemple de code Bloc:

 dojo.connect(drawToolbar, "onDrawEnd", function(geometry) { 
      //display the editable info window for newly created features 

     if (map.infoWindow.isShowing) { 
     map.infoWindow.hide(); 
     } 

     drawToolbar.deactivate(); 

     var fieldAttributes = layerFieldToAttributes(selectedTemplate.featureLayer.fields); 
     var newAttributes = dojo.mixin(fieldAttributes, selectedTemplate.template.prototype.attributes); 
     var newGraphic = new esri.Graphic(geometry, null, newAttributes); 

     var layerInfos = [{ 
     'featureLayer': selectedTemplate.featureLayer, 
     'isEditable': true 
     }]; 

     var attInspector = new esri.dijit.AttributeInspector({ 
     layerInfos: layerInfos 
     }, dojo.create("div")); 

     selectedTemplate.featureLayer.applyEdits([newGraphic], null, null, function() { 
     var screenPoint = map.toScreen(getInfoWindowPositionPoint(newGraphic)); 

     map.infoWindow.setContent(attInspector.domNode); 
     map.infoWindow.resize(325, 185); 
     map.infoWindow.show(screenPoint, map.getInfoWindowAnchor(screenPoint)); 

     templatePicker.clearSelection(); 
     }); 

     dojo.connect(attInspector, "onAttributeChange", function(feature, fieldName, newFieldValue) { 
     feature.attributes[fieldName] = newFieldValue; 
     feature.getLayer().applyEdits(null, [feature], null); 
     }); 

     dojo.connect(attInspector, "onDelete", function(feature) { 
     feature.getLayer().applyEdits(null, null, [feature]); 
     map.infoWindow.hide(); 
     }); 
    }); 
    } 

Je voudrais d'abord ajouter mon client l'attribut caractéristique et (sauf & appliquer) il.

Toute aide serait appréciée.

Voici l'exemple de projet: https://www.dropbox.com/s/fh71g1k9nsa70nq/index-2.html.zip?dl=0

Répondre

0

Je ne pense pas que vous pouvez le faire avec le AttributeInspector, essayez de créer une fenêtre contextuelle personnalisée qui aura des options pour enregistrer et supprimer/annuler, lorsque le feu enregistrer les applyEdits, lorsque vous cliquez sur supprimer, supprimer, ect.

Contenu:

var content = "<input id='text1'></input> </br>" + 
       "<input id='text1'></input> </br>" + "<button id='submit'>Submit</button>" + "<button id='delete'>Delete</button>" 
       /* 
       var attInspector = new AttributeInspector({ 
        layerInfos: layerInfos 
       }, dojo.create("div")); 
       */ 
       map.infoWindow.setTitle(selectedTemplate.featureLayer.name); 
       map.infoWindow.setContent(content); 
       map.infoWindow.resize(350, 240); 

       map.infoWindow.show(evt.geometry, map.getInfoWindowAnchor(evt.geometry)); 

Listener:

on(map.infoWindow, "show", function() { 
      on(dom.byId("submit"), "click", function() { 
       alert("I should be saving"); 
      }); 
      on(dom.byId("delete"), "click", function() { 
       alert("I should be deleting"); 
      }); 
     }) 

Vérifiez ce Fiddler: https://jsfiddle.net/kreza/jpLj5y4h/2/