我有一个可编辑的DataGrid,类似于:
<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>
当用户编辑数据时,他点击了一个按钮,并调用一个将数据保存到数据库的功能,在此功能中,我必须在发送数据之前验证数据。我想使用简单的验证器(NumberValidator,StringValidator等),但我不知道如何将此验证器的源设置为第二列中的指定行。
答案 0 :(得分:8)
<mx:NumberValidator source="{preferencesGrid.selectedItem}" property="value"
integerError="Enter Integer value"
minValue="18" maxValue="50" domain="int"
trigger="{saveButton}" triggerEvent="click"
valid="saveData();"/>
将验证器的property
设置为所需列的dataField
。
答案 1 :(得分: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();
}
}