使用itemEditor在flex数据网格中进行验证

时间:2014-04-22 23:44:49

标签: flex datagrid itemeditor

我有一个包含两列的数据网格。数据类型和值。数据类型有一个组合框,其中包含char,int,unsigned int,signed int等选项。现在我想验证value列中输入的值。我正在使用以下方法。

<mx:DataGridColumn headerText="Value"
                               dataField="Values"
                               width="100"
                               editable="{!this.areVariablesReadOnly}">
            <mx:itemEditor> <mx:Component> <mx:TextInput restrict="0-9" maxChars="3" /> </mx:Component> </mx:itemEditor>
            </mx:DataGridColumn>

这仅对int值验证值列的字段。现在,如果选择了char,我需要使用不同的itemEditor以不同的方式进行验证。 简而言之,

   if (int)
          use ItemEditor1 
   else if (char)
      use ItemEditor2
   else if (condition)
      use Itemeditor3.

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

data属性(以及dataChange事件)将让您的生活更轻松。

例如,
(假设您的数据类型字段为type

在您的MXML中:

<mx:itemEditor>
    <fx:Component>
        <local:ValueInput type="{data.type}"/>
    </fx:Component>
</mx:itemEditor>

ValueInput.as:

package
{
    import mx.controls.TextInput;

    public class ValueInput extends TextInput
    {
        public function set type(value:String):void
        {
            switch (value)
            {
                case "char":
                    restrict = null;
                    break;
                case "int":
                    restrict = "0-9";
                    break;
                case "hex":
                    restrict = "0-9A-F";
                    break;
            }
        }
    }
}

然而,我不能说这是“正确的方向”。这只是一种方式。可以有许多其他创造性方法,它还取决于开发人员的编码风格。

你想要做的也是一个很好的方式。实现MX组件只需要更长的时间。

希望这有帮助。