2012-11-16 5 views
2

참고 : 플렉스 4를 사용하고 있습니다.플렉스 데이터 그리드의 내용을 숨기는 방법은 무엇입니까?

안녕하세요, 데이터 그리드 자체를 숨기지 않고 데이터 그리드의 데이터를 숨길 수있는 방법이 있는지 알고 싶습니다. 데이터 그리드가 비어있는 상태에서 화면을 열고 싶습니다. 사용자가 콤보 상자에서 옵션을 선택하면 데이터 그리드의 내용 만 표시되도록해야합니다. 이것을 할 수있는 방법이 있습니까? (이것에 대한 이유는 복잡하고 설명하기가 즐겁지 않지만,해야 할 일입니다.)

고마워요!

+0

데이터 그리드의 dataProvider를 빈 컬렉션으로 설정할 수 있습니다. –

+0

@ Jason Sturges : 감사합니다. dataProvider가 빈 콜렉션이 아닌 경우이를 수행 할 수있는 방법이 있습니까? – jrDeveloper

+0

데이터 표를 디스플레이 목록에 표시하고 데이터를 표시하지 않으려면 공급자의 데이터를 전환하는 것이 최적의 것으로 보입니다. –

답변

4

데이터 표시 준비가 될 때까지 데이터 표의 dataProvidernull 또는 빈 모음으로 설정할 수 있습니다.

기본적으로 데이터 그리드에 대해 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> 

또 다른 방법은 플렉스 상태 시스템을 사용하는 것입니다 : 그런 다음, 원하는 콤보 상자 옵션을 선택하면 유효한 데이터에 대한 데이터 그리드 데이터 공급자를 설정합니다.

두 가지 상태를 정의하여 데이터 표에서 데이터의 가시성을 제어 할 수 있습니다. 그런 다음 현재 상태에 따라 데이터 공급자를 설정하십시오.

<?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> 
+0

감사합니다. 이것은 내가 찾던 것이 아니지만 대답에 감사드립니다. – jrDeveloper

관련 문제