Привязать данные из сетки данных - PullRequest
0 голосов
/ 13 июня 2011

У меня есть форма, которая состоит из двух сеток данных и кнопки.Datagrid 1, "myStaticDataGrid", содержит значения, которые я добавил для выбора пользователем.Я хочу, чтобы событие нажатия кнопки отправляло текущий выбор myStaticDataGrid во вторую сетку данных, "myDataGrid".Я смог сделать это, если я использую текстовое поле и сетку данных, но у меня возникают проблемы с поиском правильного синтаксиса для получения данных выбора из myStaticDataGrid.

Это моя попытка с использованием подхода двух данных:1003 *

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

1 Ответ

1 голос
/ 15 июня 2011

К сожалению, я сделал это для вас, у меня здесь есть только flex 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"/>

...