【问题标题】:Flex/Flash Builder - Copy/paste MULTIPLE rows from one dataGrid to anotherFlex/Flash Builder - 将多个行从一个 dataGrid 复制/粘贴到另一个
【发布时间】:2015-04-26 18:59:50
【问题描述】:

我需要帮助!基本上我有两个 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
                }); 


        }

提前致谢! --萌

【问题讨论】:

  • 一种解决方案是循环到您的 dataprovider 长度并将所有选定的行添加到新的新 dataprovider。

标签: actionscript-3 apache-flex datagrid flash-builder


【解决方案1】:

使用 selectedCells 属性代替 selectedItem。这是包含所有选定行的对象的集合。

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
         });
}

【讨论】:

  • 感谢您的回复!我收到错误 1119:通过静态类型 mx.controls:DataGrid 的引用访问可能未定义的属性 selectedCells。这是因为我的 Datagrid 是一个 mx 组件吗?
  • 我将其更改为高级数据网格,现在错误消息消失了。它将所选单元格的数量添加到数据网格中,但行是空白的。
  • 好的...我有一个想法必须是,但我现在没有 flex rigth 所以我无法验证它。
  • 非常感谢您的帮助,但仍然无法正常工作。它只是复制空白条目。
【解决方案2】:

实际上,您需要在所有选定的项目上调用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);
                }
        }

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-18
    • 2019-01-31
    • 1970-01-01
    相关资源
    最近更新 更多