0

2 つの列を含むデータグリッドがあります。データ型と値。データ型には、char、int、unsigned int、signed int などのオプションを備えたコンボボックスがあります。値列に入力された値を検証したいと思います。私は次の方法を使用しています。

<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.

誰かが私を正しい方向に向けることができますか?

4

1 に答える 1

0

dataプロパティ(および イベント)はあなたのdataChange人生を楽にします。

たとえば、
(Datatype フィールドが であると仮定して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;
            }
        }
    }
}

しかし、これが「正しい方向」とは言えません。それはそれを行う1つの方法にすぎません。他にも多くの創造的な方法があり、開発者のコ​​ーディング スタイルにも依存します。

あなたがやろうとしていたことも素晴らしい方法でした。MX コンポーネントの実装にはもう少し時間がかかります。

お役に立てれば。

于 2014-04-23T05:40:10.887 に答える