在DataGrid中使用验证器 - Flex

时间:2009-12-05 17:34:55

标签: flex actionscript-3 datagrid mxml

我有一个可编辑的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等),但我不知道如何将此验证器的源设置为第二列中的指定行。

2 个答案:

答案 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();
        }
    }