2011-06-13 2 views
0

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

Это моя попытка, используя два подхода: DataGrid

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

My AS событие, чтобы отправить данные:

protected function addData(event:MouseEvent):void 
{ 

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

} 

Мой вопрос, где я могу связать данные сетки?

Это, как я отправить данные TextBox к сетке данных:

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

Не могли бы вы переписать именно то, что вы пытаетесь сделать. Все, что я понял о том, что вы написали, - это привязка одной сетки к другой, которая кажется бессмысленной, поскольку у вас будут две сетки, отображающие точно такие же данные. В любом случае так вы это сделаете. bdgFormData.dataProvider = bdgFormData.dataProvider –

+0

Я отредактировал сообщение, чтобы описать больше того, что я пытаюсь сделать, а также показать, что я сделал, что сработало, более или менее. – smulholland2

+0

Так что дайте мне посмотреть, понимаю ли я это. У вас есть один datagrid, что исходные данные datagrid никогда не изменятся. У вас также есть второй datagrid, который у dataprovider основан на первом (статичном) datagrid с возможностью добавления дополнительных данных через TextInput? –

ответ

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

Смежные вопросы