2009-12-09 74 views
0

有誰知道如何通過複選框向數據網格添加新行。Flex Datagrid通過checkboxex動態添加行

例如:

checkbox 1 : label (PS2) 
    checkbox 2 : label (PS3) 
    checkbox 3 : label (PSP) 

通過選擇一個或所有這些複選框我的添加什麼新的DataGrid行。

Datagrid 

    Console   price 
    row1 PS2   $20, 
    row2 PS3   $30, 
    row3 PSP   $15, 

我希望這個例子是非常明顯的 感謝

DJ

回答

2

項目添加到自CheckBox的change事件處理DataGrid的dataProvider - 請務必檢查現有項目(並且在取消選中複選框時刪除它們)以避免重複。如果你可以發佈DataGrid的代碼,我們可以給出一個示例代碼來展示如何做到這一點。

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
    creationComplete="create()"> 
    <mx:DataGrid id="dg" dataProvider="{dp}"> 
     <mx:columns> 
     <mx:DataGridColumn dataField="console"/> 
     <mx:DataGridColumn dataField="price"/> 
     </mx:columns> 
    </mx:DataGrid> 
    <mx:CheckBox id="cb1" change="onCheck(event)"/> 
    <mx:CheckBox id="cb2" change="onCheck(event)"/> 
    <mx:CheckBox id="cb3" change="onCheck(event)"/> 
    <mx:Script> 
     <![CDATA[ 
      import mx.collections.ArrayCollection; 
      private var prices:Array = ["$20", "$30", "$15"]; 
      private var labels:Array = ["PS1", "PS2", "PS3"]; 
      private var checkBoxes:Array; 
      [Bindable]public var dp:ArrayCollection; 
      private function create():void 
      { 
       checkBoxes = [cb1, cb2, cb3]; 
       for(var i:Number = 0; i < labels.length; i++) 
        CheckBox(checkBoxes[i]).label = labels[i]; 
       dp = new ArrayCollection([]); 
      } 
      private function onCheck(event:Event):void 
      { 
       var cb:CheckBox = CheckBox(event.currentTarget); 
       var index:Number = indexOf(cb.label); 
       if(cb.selected && index == -1) 
        dp.addItem({console:cb.label, 
         price:prices[labels.indexOf(cb.label)]}); 
       else if(!cb.selected && index != -1) 
        dp.removeItemAt(index); 
      } 
      private function indexOf(str:String):Number 
      { 
       for(var i:Number = 0; i < dp.length; i++) 
       { 
        var item:Object = dp.getItemAt(i); 
        if(item.console == str) 
         return i; 
       } 
       return -1; 
      } 
     ]]> 
    </mx:Script> 
</mx:Application> 
+0

謝謝你的接吻。 我用過你的概念。我刪除了價格變種。 由於價格列的值設置爲可編輯。價格可以由用戶設置。但是現在我又陷入另一個問題了? 我如何捕獲這些行的值並將它們存儲在它們的onw var中。 因此表示: 存放PS1價格的列值VAR pricePS1 存放PS2價格的列值VAR pricePS2 在VAR pricePS3 ECT存放PS3價格的列值, 感謝您的幫助 DJ – 2009-12-09 23:11:08