flex:如何以编程方式更新datagrid值

时间:2014-11-08 18:01:39

标签: actionscript-3 flex

我是Flash和PHP的新手。我正在使用FlashBuilder和PHP产品。我有一个连接到PHP脚本的数据网格,该脚本通过“启用数据管理”功能检索和更新数据。如果我使用屏幕修改网格上的数据并调用.commit(),一切正常。

但是,我想以编程方式更改网格下的数据中的某些值,并在commit()时将这些更改返回到PHP脚本中的更新函数。叫做。但我无法弄清楚如何更改基础数据。

这是我尝试过的代码:(我来回传递给PHP脚本的对象是调用MailPiece。我想在数据的每一行上设置WORKORDERNUMBER字段)

var gridDataProvider : AsyncListView = dataGrid.dataProvider as AsyncListView;
var myMailPiece:MailPiece = gridDataProvider.getItemAt(0) as MailPiece;
var myWorkOrderNumber:String = myMailPiece.WORKORDERNUMBER;

myMailPiece.WORKORDERNUMBER="NEWWO";
(dataGrid.dataProvider).setItemAt(myMailPiece,0);

trace("about to commit");
TPP1Service.commit();

当我执行上面的脚本代码时,执行commit()时会收到以下消息: MessageBatch.applyTokenChain:emtpy token cache

有人可以帮助我指出正确的方向吗?

谢谢, 鲍勃

2 个答案:

答案 0 :(得分:0)

原来问题来自php服务

答案 1 :(得分:0)

您可以致电gridDataProvider.refresh()刷新dataProvider
或者,您可以通过调用gridDataProvider.itemUpdated(myMailPiece);

来刷新集合中的单个记录
var gridDataProvider : AsyncListView = dataGrid.dataProvider as AsyncListView;
var myMailPiece:MailPiece = gridDataProvider.getItemAt(0) as MailPiece;    
myMailPiece.WORKORDERNUMBER="NEWWO";
gridDataProvider.itemUpdated(myMailPiece);