Flex / Flash Builder - 将MULTIPLE行从一个dataGrid复制/粘贴到另一个dataGrid

时间:2015-02-24 22:49:41

标签: actionscript-3 flex datagrid flash-builder

我需要帮助!基本上我有两个mx DataGrids,一个从xml文件中提取数据,另一个是空白的,因为我想添加它。我正在尝试从一个网格中选择多个行,然后通过单击按钮将它们添加到另一个网格中。

目前我已经成功地选择,复制和粘贴了一行,但没有更多。 allowMultipleSelection选项设置为true,但是当我选择多行并尝试将它们粘贴到空dataGrid中时,它一次只会粘贴一行。

这是我用来将所选行添加到空数据网格的函数。

        public function handleAddRow(event:MouseEvent):void
        {

            summaryGrid.dataProvider.addItem({"Category": offersGrid.selectedItem.category, 
                "Program": offersGrid.selectedItem.program, 
                "Manufacturer": offersGrid.selectedItem.manufacturer, 
                "Products": offersGrid.selectedItem.products, 
                "MinimumOrder": offersGrid.selectedItem.minimumOrder, 
                "OfferDetail": offersGrid.selectedItem.offerDetail
                }); 


        }

提前致谢! --Moe

2 个答案:

答案 0 :(得分:0)

使用selectedCells属性而不是selectedItem。这是Object的集合,其中包含所有选定的行。

function handleAddRow(event:MouseEvent):void
{
    for each(var row in offersGrid.selectedCells) 
        summaryGrid.dataProvider.addItem({
            "Category": row.category, 
            "Program": row.program, 
            "Manufacturer": row.manufacturer, 
            "Products": row.products, 
            "MinimumOrder": row.minimumOrder, 
            "OfferDetail": row.offerDetail
         });
}

尝试使用此功能并确保此字段位于网格中。

function handleAddRow(event:MouseEvent):void
{
    for each(var row in offersGrid.selectedCells) 
        summaryGrid.dataProvider.addItem({
            category: row.category, 
            program: row.program, 
            manufacturer: row.manufacturer, 
            products: row.products, 
            minimumOrder: row.minimumOrder, 
            offerDetail: row.offerDetail
         });
}

答案 1 :(得分:0)

实际上,您需要在所有选定项目上调用addItem。这是我尝试的代码,它工作正常:

public function handleAddRow(event:MouseEvent):void
        {
                var selectedItems:Array = offersGrid.selectedItems;
                if(summaryGrid.dataProvider == null) summaryGrid.dataProvider = new ArrayCollection();
                for each(var item:CategoryObject in offersGrid.selectedItems) {
                    (summaryGrid.dataProvider as ArrayCollection).addItem(item);
                }
        }

您可能需要根据您的要求进行任何细微更改。如果您遇到任何其他问题,请发表评论。