1

多くの行と列 (編集可能) を持つ高度なデータ グリッドがあります。グリッドに変更が加えられた場合にのみ、グリッドからデータを保存したいと思います。ブール変数を使用せずにこれを行うにはどうすればよいですか? たとえば、「datagridId.isModified」などの組み込み関数はありますか。

4

2 に答える 2

0

参考までに、上記のコードはすべてのシナリオで起動します。データプロバイダーの更新、並べ替えなど。データプロバイダーのディスパッチ時に制限されるコレクションイベントの種類があります。

dataGrid.dataProvider.addEventListener(CollectionEvent.COLLECTION_CHANGE, function(e:CollectionEvent) {
    if(e.kind == CollectionEventKind.UPDATE){
         //this means something changed. event.items will tell you what changed. 

    }
}

=====

もう1つのアプローチは、itemEditEndイベントを使用することです。アドビドキュメントから:

<mx:AdvancedDataGrid id="myGrid" 
        itemEditEnd="onItemEditEnd(event);" >   
            private function onItemEditEnd(event:DataGridEvent):void {

                var myEditor:TextInput = 
                    TextInput(event.currentTarget.itemEditorInstance);
                var newVal:String = myEditor.text;
                var oldVal:String = event.currentTarget.editedItemRenderer.data[event.dataField];  
            }   

===

最後に、プラグイン:Ultimate DataGridは、変更コレクションを介して、変更されたすべてのアイテムを内部的に追跡します。http://flexicious.com/Home/Ultimate(Change Tracking API)の例

于 2013-01-24T22:06:29.113 に答える
0

データが実際に変更されたことを知る方法は次のとおりです。

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
    <mx:AdvancedDataGrid id="myGrid"
                         dataProvider="{dataCollection}"
                         width="200" height="100%" editable="true">
        <mx:groupedColumns>
            <mx:AdvancedDataGridColumn dataField="name"/>
            <mx:AdvancedDataGridColumn dataField="score"/>
        </mx:groupedColumns>
    </mx:AdvancedDataGrid>

    <mx:Script>  
        <![CDATA[  
            import mx.collections.ArrayCollection;
            import mx.events.CollectionEvent;

            [Bindable]  
            private var dataCollection:ArrayCollection = new ArrayCollection([  
                {name:"Name1", score:0},   
                {name:"Name2", score:10},   
            ]);

            private function init():void 
            {
                myGrid.dataProvider.addEventListener(CollectionEvent.COLLECTION_CHANGE, saveData);
            }

            private function saveData(event:CollectionEvent):void 
            {
                //your saving code
                trace("saving");
            }
        ]]>  
    </mx:Script> 
</mx:Application>
于 2013-01-24T06:32:09.207 に答える