2011-06-13 4 views
0

私は2つのデータグリッドとボタンで構成されるフォームを持っています。 Datagrid 1、 "myStaticDataGrid"には、ユーザーが選択するために追加した値があります。ボタンのクリックイベントで、現在選択されているmyStaticDataGridを2番目のデータグリッド「myDataGrid」に送信します。私はテキストボックスとデータグリッドを使用する場合、これを達成することができましたが、myStaticDataGridから選択データを取得するための正しい構文を見つけるのに問題があります。データグリッドからデータをバインドする

これは、二つのデータグリッドのアプローチを使用して、私の試みです:データを送信するために

<s:Form id="myForm"> 
//The values from this grid are determined once the button is clicked. 
    <s:FormItem id="myDataGrid"> 
    <s:DataGrid id="bdgFormData"> 
     <s:typicalItem> 
     <s:DataItem formData="Description" xmlData="Value"/> 
     </s:typicalItem> 
     <s:ArrayCollection id="values"> </s:ArrayCollection> 
    </s:DataGrid> 
    </s:FormItem> 


//The values from this grid are determined at runtime. 
<s:FormItem id="myStaticDataGrid"> 
    <s:DataGrid id="userSelects"> 
     <s:typicalItem> 
      <s:DataItem selects="Typical Item" codes="0000"/> 
     </s:typicalItem> 

     <s:ArrayCollection id="selects"> 
      <s:DataItem selects="Y" codes="1"/> 
      <s:DataItem selects="N" codes="0"/> 
     </s:ArrayCollection> 
    </s:DataGrid> 
</s:FormItem> 

<s:FormItem label="Add Selects"> 
    <s:Button label="Go" click="addData(event)"/> 
</s:FormItem> 

マイASイベント:

protected function addData(event:MouseEvent):void 
{ 

    //Put selected data at the top of the grid. 
    items.addItemAt(lstFormData.typicalItem,0) 

} 

私の質問は、私は、グリッドデータをどこに結合しますか?

これは私がデータグリッドにテキストボックスのデータを送信する方法である:

<s:FormItem label="myDataUtil"> 
    <s:Label text="Value"/> 
    <s:TextInput text="@{lstFormData.typicalItem.formData}"/> 
</s:FormItem> 
+0

を結合せずに一例です。私があなたが書いたことを理解しただけで、同じグリッドに2つのグリッドを正確に表示させるので、1つのグリッドを他のグリッドにバインドしたいと思っています。いずれにせよ、これはあなたがそれをやる方法です。 bdgFormData.dataProvider = bdgFormData.dataProvider –

+0

私は何をやろうとしているのかを記述するために投稿を編集しました。 – smulholland2

+0

私はこれを理解するかどうか見てみましょう。データグリッドのソースデータが決して変更されないデータグリッドが1つあります。また、データプロバイダが、最初の(静的な)データグリッドに基づいて、TextInput経由でデータを追加できる2番目のデータグリッドもありますか? –

答えて

1

私はあなたが必要なものは何でものための変換を行う必要がありますので、あなたは、残念ながら私はここ3フレックスを持っているためにこれを手早くいますどのように動作するかのアイデアを得る必要があります。ここで

<?xml version="1.0" encoding="utf-8"?> 
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()"> 
    <mx:Script> 
    <![CDATA[ 
    import mx.collections.ArrayCollection; 
    [Bindable] 
    public var originalData:ArrayCollection 

    [Bindable] 
    public var changingData:ArrayCollection; 

    public function init():void{ 
    this.changingData = new ArrayCollection() 
    this.originalData = new ArrayCollection() 
    for(var i:int = 0;i<100;i++){ 
     var obj:Object = new Object() 
     obj.label = 'slot '+ i; 
     obj.value = 's'+i; 
     originalData.addItem(obj); 
    } 
    } 

    public function onSelect(e:Event):void{ 
    this.changingData.addItem((e.currentTarget as DataGrid).selectedItem) 
    } 

    ]]> 
    </mx:Script> 

<mx:DataGrid id="myStaticDataGrid" dataProvider="{originalData}" click="onSelect(event)"/> 
<mx:DataGrid id="bdgFormData" dataProvider="{changingData}" x="240" y="0"/> 

</mx:Application> 

はあなたがやろうとしている正確に何を書き換えるでしデータ

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

      public function onSelect(e:Event):void{ 
       var targetProvider:ArrayCollection = (bdgFormData.dataProvider as ArrayCollection) 
       if(!targetProvider){ 
        targetProvider = new ArrayCollection() 
       } 
       targetProvider.addItem((e.currentTarget as DataGrid).selectedItem) 
       bdgFormData.dataProvider = targetProvider 
      } 

    ]]> 
</mx:Script> 

<mx:DataGrid id="myStaticDataGrid" click="onSelect(event)" > 
    <mx:dataProvider> 
     <mx:ArrayCollection > 
      <mx:Object label="AIR" /> 
      <mx:Object label="ColdFusion" /> 
      <mx:Object label="Dreamweaver" /> 
      <mx:Object label="Flash" /> 
      <mx:Object label="Flex" /> 
      <mx:Object label="Photoshop" /> 
     </mx:ArrayCollection> 
    </mx:dataProvider> 
</mx:DataGrid> 
<mx:DataGrid id="bdgFormData" x="240" y="0"/>