在 DataGrid 中使用验证器 - Flex

Posted

技术标签:

【中文标题】在 DataGrid 中使用验证器 - Flex【英文标题】:Using validators in DataGrid - Flex 【发布时间】:2010-12-23 14:17:26 【问题描述】:

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

【问题讨论】:

【参考方案1】:
<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();
        
    

【讨论】:

【参考方案2】:
<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

【讨论】:

对,工作正常,但我怎样才能将源设置为所需的列而不是使用 preferencesGrid.selectedItem?谢谢

以上是关于在 DataGrid 中使用验证器 - Flex的主要内容,如果未能解决你的问题,请参考以下文章

Flex 4.5 (Hero) s:Datagrid RowCount

Flex - 通过文本输入搜索/过滤 DataGrid

使用 Flex 3 在会话中划分 dataGrid

如何在 Flex 中控制 Spark Datagrid 的滚动条位置?

如何使用mx Prints DataGrid打印flex spark datagrid?或者是否有其他方法可以在不使用mx Prints DataGrid的情况下实现此目的?

Flex DataGrid 标题列分隔符