我在Flex中有兩個Datagrid。我從Datagrid1
數據綁定到Datagrid2
像如何防止flex數據網格中的數據綁定?
(Datagrid2.dataProvider=Datagrid1.dataProvider as ArrayCollection;)
如果我刪除Datagrid2
數據,然後自動另一個Datagrid1
刪除。
所以我不想刪除Datagrid1
中的數據。我該怎麼做,但我有其他選擇刪除數據到Datagrid1
?
我在Flex中有兩個Datagrid。我從Datagrid1
數據綁定到Datagrid2
像如何防止flex數據網格中的數據綁定?
(Datagrid2.dataProvider=Datagrid1.dataProvider as ArrayCollection;)
如果我刪除Datagrid2
數據,然後自動另一個Datagrid1
刪除。
所以我不想刪除Datagrid1
中的數據。我該怎麼做,但我有其他選擇刪除數據到Datagrid1
?
這主要是因爲Datagrid1.dataProvider和Datagrid2.dataProvider是指針。每次當你設置object1 = object2時,他們將共享相同的內存,因爲你給他們相同的地址來查看。
許多簡單的方法來刪除這種引用。
datagrid2.dataProvider = datagrid1.dataProvider.toArray();
或
datagrid2.dataProvider = ObjectUtil.copy(datagrid1.dataProvider)作爲ArrayCollection的;
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
private function deleteFromDataGrid1():void {
if(datagrid1.selectedIndex > -1)
myAC.removeItemAt(datagrid1.selectedIndex);
myAC.refresh();
}
private function deleteFromDataGrid2():void {
if(datagrid2.selectedIndex > -1)
datagrid2.dataProvider.removeItemAt(datagrid2.selectedIndex);
}
]]>
</mx:Script>
<!-- An ArrayCollection with an array of objects -->
<mx:ArrayCollection id="myAC">
<!-- Use an mx:Array tag to associate an id with the array. -->
<mx:Array id="myArray">
<mx:Object label="MI" data="Lansing"/>
<mx:Object label="MO" data="Jefferson City"/>
<mx:Object label="MA" data="Boston"/>
<mx:Object label="MT" data="Helena"/>
<mx:Object label="ME" data="Augusta"/>
<mx:Object label="MS" data="Jackson"/>
<mx:Object label="MN" data="Saint Paul"/>
</mx:Array>
</mx:ArrayCollection>
<mx:ApplicationControlBar>
<mx:Button id="myButton" label="deleteFromDataGrid1" click="deleteFromDataGrid1()"/>
<mx:Button id="myButton2" label="deleteFromDataGrid2" click="deleteFromDataGrid2()"/>
</mx:ApplicationControlBar>
<mx:HBox width="100%" horizontalAlign="center" height="100%">
<mx:DataGrid id="datagrid1" dataProvider="{myAC}" height="100%"/>
<mx:DataGrid id="datagrid2" dataProvider="{datagrid1.dataProvider.toArray()}" height="100%"/>
</mx:HBox>
</mx:Application>
使用以下...
(Datagrid2.dataProvider = ObjectUtil.copy(Datagrid1.dataProvider) as ArrayCollection;)
或
private var _coll:ArrayCollection;
private function setData():void{
Datagrid1.dataProvider = _coll;
Datagrid2.dataProvider = ObjectUtil.copy(_coll) as ArrayCollection;
}
在上述情況下
;如果你刪除,從一個數據網格更改項目不會影響到另一個數據網格...
感謝混音。它工作正常 – user1328256 2012-05-14 10:06:50