从DataGrid中删除,添加和保存xml中的项目

时间:2013-06-23 06:53:33

标签: xml flex removechild remoteobject

我使用本地xml文件。当我在Web浏览器中删除项目时,它将被删除但xml文件不会更改。为什么这附加? 这是我的xml文件;

<?xml version="1.0" encoding="utf-8" ?>
<products>
    <product>
        <productId>1</productId>
        <categoryId>1</categoryId>
        <name>Azalea</name>
        <nickname>California Snow</nickname>
        <instructions>Large double.</instructions>
        <catalogNumber>S1</catalogNumber>
        <price>15.99</price>
        <photo>california_snow.jpg</photo>
    </product>

    <product>
        <productId>2</productId>
        <categoryId>1</categoryId>
        <name>Tibouchina Semidecandra</name>
        <instructions>Beautiful large royal.</instructions>
        <catalogNumber>S2</catalogNumber>
        <price>33.99</price>
        <photo>princess_flower.jpg</photo>
    </product>
      ...

我在下面写下这些代码。同时如何添加和更改它? 已经非常感谢你了

<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
  xmlns:s="library://ns.adobe.com/flex/spark" 
  xmlns:mx="library://ns.adobe.com/flex/mx"
  skinClass="skins.HPAppSkin">

  <fx:Script>
    <![CDATA[
      protected function button1_clickHandler(event:MouseEvent):void
      {

        productCollection.removeItemAt(productGrid.selectedIndex);


      }
    ]]>
  </fx:Script>

  <fx:Declarations>
    <fx:Model id="productModel" source="data/products.xml"/>
    <s:ArrayList id="productCollection"
      source="{productModel.product}"/>
  </fx:Declarations>

  <mx:DataGrid id="productGrid" dataProvider="{productCollection}"/>
  <s:Button label="Remove Item" click="button1_clickHandler(event)"
    enabled="{productGrid.selectedIndex != -1}"/>
</s:Application>

2 个答案:

答案 0 :(得分:0)

removeItem仅从dataProvider中删除该项 - 而不是从加载它的XML中删除该项。手动删除项目后,需要相应地更新/重写XML。

答案 1 :(得分:0)

从你的xml ......我认为ProductId是独一无二的...... 您可以在数组中添加您的ProductId ... 像这样:

public var removedItemArray:Array = new Array();
protected function button1_clickHandler(event:MouseEvent):void
  {

    productCollection.removeItemAt(productGrid.selectedIndex);
    removedItemArray.push(event.currentTarget.selectedItem.productId);

  }

然后通过删除removedItemArray中的ProductIds,将removedItemArray数据发送到您构建Xml并重新构建Xml的位置。

我希望这可能会杀死你的Prob兄弟!