2009-12-05 9 views
8

i eine bearbeitbare Datenraster haben, so etwas wie:Mit Validatoren in Datagrid - Flex

<mx:Datagrid editable="true" dataProvider="{arrayListPreferences}" id="preferencesGrid"> 
    <mx:columns> 
     <mx:DataGridColumn header="col1" dataField="preference" editable="false"/> 
     <mx:DataGridColumn header="col2" dataField="value" editable="true"/> 
    </mx:columns> 
</mx:Datagrid> 

Wenn der Benutzer die Daten bearbeitet gibt es eine Schaltfläche, die er klickt und ruft eine Funktion, die die Daten in einer Datenbank speichert, und In dieser Funktion muss ich die Daten validieren, bevor ich sie sende. Ich möchte einfache Validatoren (NumberValidator, StringValidator usw.) verwenden, aber ich weiß nicht, wie ich die Quelle dieser Validatoren auf die angegebenen Zeilen in der zweiten Spalte setzen soll.

Antwort

8
<mx:NumberValidator source="{preferencesGrid.selectedItem}" property="value" 
    integerError="Enter Integer value" 
    minValue="18" maxValue="50" domain="int" 
    trigger="{saveButton}" triggerEvent="click" 
    valid="saveData();"/> 

die property des Validator zum dataField der gewünschten Spalte.

+0

Richtig, das funktioniert gut, aber wie kann ich die Quelle auf eine gewünschte Spalte setzen statt {preferencesGrid.selectedItem}? Danke –

+0

Ich schaffte das mit preferencesGrid.dataProvider [] –

2
<mx:DataGridColumn editable="true" itemRenderer="MyTextInputItemRenderer"/> 



public class MyTextInputItemRenderer extends TextInput{ 
     private var validator:StringValidator; 
     public function MyTextInputItemRenderer(){ 
      validator = new StringValidator; 
      validator.minLength=0; 
      validator.property = "text"; 
      validator.source = this; 
     } 
     override public function set data(value:Object):void{ 
      super.data = value; 
      validator.validate(); 
     } 
    }