根据给定的信息,本文将详细解析Flex中的数据验证与显示技术。主要聚焦于Flex框架下对日期、货币以及字符串等数据类型的验证与显示方法,并通过示例代码进行具体阐述。 ### Flex中的数据验证 Flex提供了丰富的功能来实现数据验证,这对于确保用户输入的有效性和准确性至关重要。在Flex中,可以通过内置的验证器类来实现这一目标,这些验证器包括但不限于`CreditCardValidator`、`CurrencyValidator`、`DateValidator`和`EmailValidator`等。 #### 验证器的使用方式 验证器通常被定义在组件的`<fx:Declarations>`标签内,并且通过属性设置来进行具体配置。例如,`NumberValidator`可以用来验证数值型数据是否符合特定格式要求。下面是一个简单的例子: ```xml <mx:FormItem required="true"> <s:Label text="小时数" id="lblHours"/> <s:TextInput id="hourInput" width="148"/> </mx:FormItem> <mx:NumberValidator id="hourValidator" precision="2" allowNegative="false" required="true" source="{hourInput}" property="text" trigger="{submitButton}" triggerEvent="click"/> ``` 在这段代码中: - `precision`属性用于指定允许的小数位数。 - `allowNegative`属性用来确定是否允许负数。 - `required`属性表示该字段是否必须填写。 - `source`属性指向需要验证的目标组件(本例中的`hourInput`)。 - `property`属性定义了需要验证的组件属性名称。 - `trigger`和`triggerEvent`属性则指定了触发验证动作的方式和事件类型(例如点击按钮时触发验证)。 ### 数据格式化 除了数据验证外,Flex还提供了一系列的格式化工具,如`Formatter`类及其子类,如`CurrencyFormatter`、`DateFormatter`和`NumberFormatter`等。这些工具可以帮助开发者按照预期格式展示数据。 #### 格式化的使用实例 在实际应用中,格式化器同样可以在`<fx:Declarations>`部分声明,并通过`formatString`属性指定具体的格式化规则。以下是一个使用`mx:PhoneFormatter`的例子: ```xml <fx:Declarations> <mx:PhoneFormatter id="formatTC017" formatString="####-#####" /> <mx:DateFormatter id="dateDisplay" formatString="EEEE, MMM D, YYYY" /> </fx:Declarations> <mx:FormItem label=""> <s:TextInput id="tC017TextInput" text="{cfcoptc.TC017}" focusOut="tC017TextInput_focusOutHandler(event)"/> </mx:FormItem> <mx:Label text="{dateDisplay.format(todayDate)}"/> ``` 在这个例子中: - `<mx:PhoneFormatter id="formatTC017" formatString="####-#####" />` 定义了一个电话号码格式化器,其中`formatString`参数设定了电话号码的具体格式。 - `<mx:DateFormatter id="dateDisplay" formatString="EEEE, MMM D, YYYY" />` 定义了一个日期格式化器,用于显示友好的日期格式。 - `tC017TextInput_focusOutHandler`函数在文本框失去焦点时触发,用于重新格式化输入的文本。 ### 使用自定义函数进行数据格式化 除了使用内置的格式化器外,Flex还支持通过自定义函数来进行更复杂的数据格式化处理。例如,在DataGridColumn中使用`labelFunction`属性指定一个函数,该函数负责接收数据项并返回格式化后的字符串。 ```xml <mx:DataGridColumn dataField="phone" headerText="电话号码" labelFunction="formatPhoneNumber" /> ``` 下面是一个具体的`formatPhoneNumber`函数示例: ```as private function formatPhoneNumber(item:Object, phone:DataGridColumn):String { var phoneString:String = item.phone; var pattern:RegExp = /-/g; phoneString = phoneString.replace(pattern, ""); return phoneFormat.format(phoneString); } ``` 在此示例中: - `formatPhoneNumber`函数接收两个参数:`item`(数据项对象)和`phone`(DataGridColumn对象)。 - 使用正则表达式移除电话号码中的连字符。 - 最后调用前面定义的`mx:PhoneFormatter`格式化器对电话号码进行格式化。 Flex提供的数据验证和格式化功能非常强大,能够帮助开发者轻松地处理各种数据展示需求。通过对上述知识点的理解和应用,可以有效地提升应用程序的用户体验和数据准确性。
Flex数据显示格式化与数据验证
Formatter类
Flex框架中的Formatter类。该类将数据格式化成字符串。所有的格式化类都是mx.formatters.Formatter类的子类,包括:
・ CurrencyFormatter (格式化货币)
・ DateFormatter (格式化日期)
・ NumberFormatter (格式化数字)
・ PhoneFormatter (格式化电话号码)
・ ZipCodeFormat (格式化邮政编码)
Formatter类的使用
Formatter类也属于非可视化元素,所以在程序中也必须放在Declarations标签块中。
・ 所有的格式化类都有一个format()方法,在对象进行格式化时调用该方法;
・ 每个格式化子类都有特别的属性来自定义字符串的表现,这个属性就是formatString
protected function tC017TextInput_focusOutHandler(event:FocusEvent):void{
tC017TextInput.text= formatTC017.format(tC017TextInput.text);
<fx:Declarations>
<mx:PhoneFormatter id="formatTC017" formatString="####-#####"/>
<mx:DateFormatter id="dateDisplay" formatString="EEEE, MMMM D,YYYY"/>
</fx:Declarations>
<mx:FormItem label="生产代号">
<s:TextInput id="tC017TextInput" text="{cfcoptc.TC017}" focusOut="tC017TextInput_focusOutHandler(event)"/>
</mx:FormItem>
<mx:Label text="{dateDisplay.format(todayDate)}"/>
可以使用DataGridColumn类的labelFunction属性来格式化在列中显示的数据。在这个属性上,你可以指定将要执行的函数,并注意不要使用括号。
<mx:DataGrid……
<mx:columns……
<mx:DataGridColumn dataField="phone" headerText="phone #" labelFunction="formatPhoneNumber"/>
//我们为这个列添加了labelFunction属性,并设定它的值为函数formatPhoneNumber。
</mx:columns>
</mx:DataGrid>
在函数formatPhoneNumber中需要指定两个参数,首先是一个对象,通常称为"item",这代表了创这条纪录的数据。第二个,是将要被格式化的列的名字,以DataGridColumn类的对象的形式传递进来。在返回值语句部分,你可以调用格式化器来返回被格式化之后的字符串。
剩余25页未读,继续阅读
- 粉丝: 0
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助