0

私は本当にあなたの助けが必要です。担当者は次の問題を抱えています: 私は列 2 と呼ばれる列を持つデータグリッドを持っています。列 2 には固定数があり、残りは編集可能な列 = true であるため、クライアントはデータを入力できます。比較を行う関数を呼び出すために手動で挿入できるので、すべてを望みます。行に挿入された値を変更しているその行は、列の値より大きくすることはできません: 列 2

これはサンプルラインごとに行われました

 Line 1: Fixed number ==> 85
 I can get editable columns in column 3: value = 20
 I can get editable columns in column 4: value = 50
 I can get editable columns in column 5: value = 100

値が列 2 より大きい場合、アラートが発行されます。

Flex3を使用しています

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:ArrayCollection id="arrColl">
    <mx:source>
        <mx:Array>
            <mx:Object label="Student A" score="85" />
            <mx:Object label="Student B" score="48" />
            <mx:Object label="Student C" score="71" />
            <mx:Object label="Student D" score="88" />
            <mx:Object label="Student E" score="24" />
            <mx:Object label="Student F" score="64" />
            <mx:Object label="Student G" score="76" />
            <mx:Object label="Student H" score="76" />
            <mx:Object label="Student I" score="93" />
            <mx:Object label="Student J" score="88" />
            <mx:Object label="Student K" score="48" />
            <mx:Object label="Student L" score="76" />
        </mx:Array>
    </mx:source>
</mx:ArrayCollection>
<mx:DataGrid x="396" y="309" dataProvider="{arrColl}" editable="true">
    <mx:columns>
        <mx:DataGridColumn headerText="Column 1"  dataField="label"  />
        <mx:DataGridColumn headerText="Column 2"  dataField="score"  />
        <mx:DataGridColumn headerText="Column 3"  editable="true"  dataField="col1"/>
        <mx:DataGridColumn headerText="Column 4"  editable="true"  dataField="col2"/>
        <mx:DataGridColumn headerText="Column 5"  editable="true"  dataField="col3"/>
        <mx:DataGridColumn headerText="Column 6"  editable="true"  dataField="col4"/>
        <mx:DataGridColumn headerText="Column 7"  editable="true"  dataField="col5" />
    </mx:columns>
</mx:DataGrid>

4

2 に答える 2

0

これを行う必要があります:

  1. スコア列に editable = "false" を設定して、ユーザーが固定値を変更できないようにします
  2. 列 col1 から col5 に制限を設定して、数値のみを入力できるようにします
  3. 比較を行うためのチェック機能を追加します

これが私のコードです:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
    <![CDATA[
        import mx.controls.Alert;
        import mx.controls.TextInput;
        import mx.events.DataGridEvent;
        import mx.events.DataGridEventReason;

        protected function checkInput(event:DataGridEvent):void
        {
            if (event.reason == DataGridEventReason.NEW_ROW || event.reason == DataGridEventReason.NEW_COLUMN)
            {
                var editor:TextInput = (event.currentTarget as DataGrid).itemEditorInstance as TextInput;
                var text:String = editor.text;

                if( event.dataField == "col1" || event.dataField == "col2" || event.dataField == "col3" || event.dataField == "col4" || event.dataField == "col5")
                {
                    if(int(text) > int(event.itemRenderer.data.score)) 
                    {                           
                        editor.text = "";

                        event.preventDefault();

                        Alert.show(text + " is too big!");

                        return;
                    }
                }
            }
        }

    ]]>
</mx:Script>
<mx:ArrayCollection id="arrColl">
    <mx:source>
        <mx:Array>
            <mx:Object label="Student A" score="85"/>
            <mx:Object label="Student B" score="48"/>
            <mx:Object label="Student C" score="71"/>
            <mx:Object label="Student D" score="88"/>
            <mx:Object label="Student E" score="24"/>
            <mx:Object label="Student F" score="64"/>
            <mx:Object label="Student G" score="76"/>
            <mx:Object label="Student H" score="76"/>
            <mx:Object label="Student I" score="93"/>
            <mx:Object label="Student J" score="88"/>
            <mx:Object label="Student K" score="48"/>
            <mx:Object label="Student L" score="76"/>
        </mx:Array>
    </mx:source>
</mx:ArrayCollection>
<mx:DataGrid x="396" y="309" dataProvider="{arrColl}" editable="true" itemEditEnd="checkInput(event)">
    <mx:columns>
        <mx:DataGridColumn headerText="Column 1"  dataField="label" editable="false"/>
        <mx:DataGridColumn headerText="Column 2"  dataField="score" editable="false"/>

        <mx:DataGridColumn headerText="Column 3"  editable="true" dataField="col1">
            <mx:itemEditor>
                <mx:Component>
                    <mx:TextInput restrict="0-9"/>
                </mx:Component>
            </mx:itemEditor> 
        </mx:DataGridColumn>

        <mx:DataGridColumn headerText="Column 4"  editable="true" dataField="col2">
            <mx:itemEditor>
                <mx:Component>
                    <mx:TextInput restrict="0-9"/>
                </mx:Component>
            </mx:itemEditor> 
        </mx:DataGridColumn>

        <mx:DataGridColumn headerText="Column 5"  editable="true" dataField="col3">
            <mx:itemEditor>
                <mx:Component>
                    <mx:TextInput restrict="0-9"/>
                </mx:Component>
            </mx:itemEditor> 
        </mx:DataGridColumn>

        <mx:DataGridColumn headerText="Column 6"  editable="true" dataField="col4">
            <mx:itemEditor>
                <mx:Component>
                    <mx:TextInput restrict="0-9"/>
                </mx:Component>
            </mx:itemEditor> 
        </mx:DataGridColumn>

        <mx:DataGridColumn headerText="Column 7"  editable="true" dataField="col5">
            <mx:itemEditor>
                <mx:Component>
                    <mx:TextInput restrict="0-9"/>
                </mx:Component>
            </mx:itemEditor> 
        </mx:DataGridColumn>

    </mx:columns>
</mx:DataGrid>
</mx:Application>
于 2013-02-26T14:03:25.200 に答える
0
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
    import mx.controls.Alert;
    import mx.controls.TextInput;
    import mx.events.DataGridEvent;
    import mx.events.DataGridEventReason;

    [Bindable]
    var Acumula:int = 0;

    protected function checkInput(event:DataGridEvent):void
    {


        if (event.reason == DataGridEventReason.NEW_ROW || event.reason == DataGridEventReason.NEW_COLUMN)
        {
            var editor:TextInput = (event.currentTarget as DataGrid).itemEditorInstance as TextInput;
            var text:String = editor.text;
            var myEditor:TextInput =  TextInput(event.currentTarget.itemEditorInstance);


            Acumula += int(myEditor.text);
            if(int(Acumula) > int(event.itemRenderer.data.score)) 
                {                           
                    Acumula = 0;

                    event.preventDefault();

                    Alert.show(text + "ULTRAPASSOU!");

                    return;
                }

        }
    }

]]>
</mx:Script>
<mx:ArrayCollection id="arrColl">
<mx:source>
    <mx:Array>
        <mx:Object label="Student A" score="85"/>
        <mx:Object label="Student B" score="48"/>
        <mx:Object label="Student C" score="71"/>
        <mx:Object label="Student D" score="88"/>
        <mx:Object label="Student E" score="24"/>
        <mx:Object label="Student F" score="64"/>
        <mx:Object label="Student G" score="76"/>
        <mx:Object label="Student H" score="76"/>
        <mx:Object label="Student I" score="93"/>
        <mx:Object label="Student J" score="88"/>
        <mx:Object label="Student K" score="48"/>
        <mx:Object label="Student L" score="76"/>
    </mx:Array>
</mx:source>
</mx:ArrayCollection>
<mx:DataGrid x="10" y="28" dataProvider="{arrColl}" editable="true" itemEditEnd="checkInput(event)">
<mx:columns>
    <mx:DataGridColumn headerText="Column 1"  dataField="label" editable="false"/>
    <mx:DataGridColumn headerText="Column 2"  dataField="score" editable="false"/>

    <mx:DataGridColumn headerText="Column 3"  editable="true" dataField="col1">
        <mx:itemEditor>
            <mx:Component>
                <mx:TextInput restrict="0-9"/>
            </mx:Component>
        </mx:itemEditor> 
    </mx:DataGridColumn>

    <mx:DataGridColumn headerText="Column 4"  editable="true" dataField="col2">
        <mx:itemEditor>
            <mx:Component>
                <mx:TextInput restrict="0-9"/>
            </mx:Component>
        </mx:itemEditor> 
    </mx:DataGridColumn>

    <mx:DataGridColumn headerText="Column 5"  editable="true" dataField="col3">
        <mx:itemEditor>
            <mx:Component>
                <mx:TextInput restrict="0-9"/>
            </mx:Component>
        </mx:itemEditor> 
    </mx:DataGridColumn>

    <mx:DataGridColumn headerText="Column 6"  editable="true" dataField="col4">
        <mx:itemEditor>
            <mx:Component>
                <mx:TextInput restrict="0-9"/>
            </mx:Component>
        </mx:itemEditor> 
    </mx:DataGridColumn>

    <mx:DataGridColumn headerText="Column 7"  editable="true" dataField="col5">
        <mx:itemEditor>
            <mx:Component>
                <mx:TextInput restrict="0-9"/>
            </mx:Component>
        </mx:itemEditor> 
    </mx:DataGridColumn>

</mx:columns>
</mx:DataGrid>
<mx:Label x="164" y="211" text="{Acumula}"/>
</mx:Application>
于 2013-02-26T16:36:49.683 に答える