2009-12-05 16 views
8

Tengo una cuadrícula de datos editable, algo así como:Uso de validadores en 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> 

Cuando el usuario modifica los datos que hay un botón que haga clic y se llama a una función que guarda los datos en una base de datos, y en esta función, debo validar los datos antes de enviarlos. Quiero usar validadores simples (NumberValidator, StringValidator, etc.) pero no sé cómo configurar el origen de estos validadores en las filas especificadas en la segunda columna.

Respuesta

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

Establecer la property del validador para el dataField de la columna deseada.

+0

Correcto, eso funciona bien, pero ¿cómo puedo configurar la fuente en una columna deseada en lugar de usar {preferencesGrid.selectedItem}? Gracias –

+0

Logré hacer eso 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(); 
     } 
    } 
Cuestiones relacionadas