2009-12-05 14 views
8

Ho un DataGrid modificabile, qualcosa di simile:Uso validatori 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> 

Quando l'utente modifica i dati c'è un pulsante che fa clic e chiama una funzione che consente di salvare i dati in un database, e in questa funzione devo convalidare i dati prima di inviarli. Voglio usare semplici validatori (NumberValidator, StringValidator, ecc.) Ma non so come impostare l'origine di questi validatori sulle righe specificate nella seconda colonna.

risposta

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

Impostare la property del validatore al dataField della colonna desiderata.

+0

Destra, funziona bene, ma come posso impostare il sorgente su una colonna desiderata invece di usare {preferencesGrid.selectedItem}? Grazie –

+0

Sono riuscito a farlo usando 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(); 
     } 
    }