我正在使用mx:DataGrid,我無法更改爲spark(這是一個傳統項目)。 DataGrid是可編輯的,當用戶進入最後一列時,我想添加一個新列並在新行的第一列中啓動編輯模式。我可以做這個。添加新行到mx DataGrid的問題
我的問題是,有時最後一列無法編輯,所以我添加了一個itemEditBeginning監聽器來停止編輯並添加新行。這是我的問題。當用戶進入最後一個字段時,新行被添加,但我看不到它。我必須單擊列標題才能對datagrid數據進行排序,然後出現新行。這有點遲緩。
我的代碼是大,但這個簡單的代碼能重現同樣的問題:
<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"
creationComplete="application1_creationCompleteHandler(event)"
minWidth="955" minHeight="600">
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.events.CollectionEvent;
import mx.events.CollectionEventKind;
import mx.events.DataGridEvent;
import mx.events.FlexEvent;
[Bindable] public var itens:ArrayCollection;
protected function application1_creationCompleteHandler(event:FlexEvent):void {
itens = new ArrayCollection();
itens.addEventListener(CollectionEvent.COLLECTION_CHANGE, onCollectionChange);
itens.addItem({a: '1', b: '2'});
}
protected function onCollectionChange(event:CollectionEvent):void {
if (event.kind == CollectionEventKind.ADD) {
var row:int = itens.length - 1;
var column:int = 0;
var args:Array = [row, column];
callLater(moveTo, args);
}
}
protected function moveTo(row:int, col:int):void {
itensDg.editedItemPosition = { rowIndex:row, columnIndex:col };
}
protected function addInfo():void {
itens.addItem({a: '10', b: '20'});
}
protected function itensDg_itemEditBeginningHandler(event:DataGridEvent):void {
if (event.columnIndex == 1) {
event.preventDefault();
addInfo();
}
}
]]>
</fx:Script>
<mx:DataGrid id="itensDg" dataProvider="{itens}" editable="true"
itemEditBeginning="itensDg_itemEditBeginningHandler(event)" />
</s:Application>
有關如何解決這個任何提示?
謝謝。
崔西您好,感謝您的回答。刷新arrayCollection的作品:新項目不加延遲地添加。問題是,添加該行時,該列未打開進行編輯。 –