2

注:私はFLEX4を使用しています。

こんにちは、データグリッド自体を非表示にせずにデータグリッドのデータを非表示にする方法があるかどうか知りたいですか?データグリッドが空の状態で画面を開きたい。ユーザーがコンボボックスからオプションを選択した場合にのみ、データグリッドのコンテンツを表示したいと思います。これを行う方法はありますか?(この理由は、複雑で説明するのが面白くありませんが、私がしなければならないことです。)

ありがとう!

4

1 に答える 1

4

dataProviderデータを表示する準備ができるまで、データグリッドをnullまたは空のコレクションに設定できます。

デフォルトでは、nullまたは空のコレクションをデータグリッドに初期化します。次に、目的のコンボボックスオプションを選択したら、データグリッドデータプロバイダーを有効なデータに設定します。

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
               xmlns:s="library://ns.adobe.com/flex/spark">
    <fx:Script>
        <![CDATA[
            import mx.collections.ArrayList;

            import spark.events.IndexChangeEvent;

            [Bindable]
            public var data:ArrayList = new ArrayList([ "one", "two", "three" ]);

            protected function combobox1_changeHandler(event:IndexChangeEvent):void
            {
                switch (comboBox.selectedItem)
                {
                    case "Show data":
                        dataGrid.dataProvider = data;
                        break;
                    default:
                        dataGrid.dataProvider = null;
                        break;
                }
            }
        ]]>
    </fx:Script>

    <s:layout>
        <s:VerticalLayout />
    </s:layout>

    <s:DataGrid id="dataGrid"
                dataProvider="{null}" />

    <s:ComboBox id="comboBox"
                change="combobox1_changeHandler(event)">
        <s:dataProvider>
            <s:ArrayList>
                <fx:String>Show data</fx:String>
                <fx:String>Hide data</fx:String>
            </s:ArrayList>
        </s:dataProvider>
    </s:ComboBox>

</s:Application>

別のアプローチは、Flex状態システムを使用することです。

2つの状態を定義して、データグリッド内のデータの可視性を制御できます。次に、現在の状態に応じてデータプロバイダーを設定します。

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
               xmlns:s="library://ns.adobe.com/flex/spark"
               currentState="hideData">

    <s:states>
        <s:State name="showData" />
        <s:State name="hideData" />
    </s:states>

    <fx:Script>
        <![CDATA[
            import mx.collections.ArrayList;

            import spark.events.IndexChangeEvent;

            [Bindable]
            public var data:ArrayList = new ArrayList([ "one", "two", "three" ]);

            protected function combobox1_changeHandler(event:IndexChangeEvent):void
            {
                switch (comboBox.selectedItem)
                {
                    case "Show data":
                        currentState = "showData";
                        break;
                    default:
                        currentState = "hideData";
                        break;
                }
            }
        ]]>
    </fx:Script>

    <s:layout>
        <s:VerticalLayout />
    </s:layout>

    <s:DataGrid id="dataGrid"
                dataProvider.hideData="{null}"
                dataProvider.showData="{data}" />

    <s:ComboBox id="comboBox"
                change="combobox1_changeHandler(event)">
        <s:dataProvider>
            <s:ArrayList>
                <fx:String>Show data</fx:String>
                <fx:String>Hide data</fx:String>
            </s:ArrayList>
        </s:dataProvider>
    </s:ComboBox>

</s:Application>
于 2012-11-16T04:04:02.930 に答える