【发布时间】:2010-11-23 11:22:02
【问题描述】:
我正在使用 Adobe Air 从 SalesForce 获取数据,并将其呈现在数据网格中。
我正在使用查询来获取数据,然后将其放入绑定到数据网格的数组集合中,这样可以正常工作并显示数据。
问题是我想将事件中的帐户 ID 转换为显示帐户名称。为此,我使用以下代码:-
_serviceWrapper.query( "Select * From Event order by StartDateTime asc", new mx.rpc.Responder( eventQueryHandler, faultHandler ))}
protected function eventQueryHandler(qr:ArrayCollection):void {
var acctIdss:String = "";
for each(var contact:DynamicEntity in qr) {
if (contact.AccountId != null && acctIdss.indexOf(contact.AccountId) == -1) {
acctIdss += "'" + contact.AccountId + "',";
}
//contact.AccountName = ""; // Add field to contact for account name
TempGridProvider.addItem(contact); // Add contact to temp grid data data provider
//TempGridProvider.contact.AccountName = "";
}
acctIdss = acctIdss.substr(0, acctIdss.length - 1);
// Query for the accounts based on the account ids found in the contact list
_serviceWrapper.query("Select Id, Name, BillingCity From Account Where Id in (" + acctIdss + ")",
new SfdcAsyncResponder(Event2QueryHandler, faultHandler));
}
protected function Event2QueryHandler(accounts:ArrayCollection):void {
for each (var account:DynamicEntity in accounts) {
for each(var contact:DynamicEntity in TempGridProvider) {
if (contact.AccountId == account.Id) {
contact.AccountName = account.Name + " - " + account.BillingCity;
}
}
}
onQueryResult(TempGridProvider);
private function onQueryResult( rows : ArrayCollection ) : void {
// release previous query results
_serviceWrapper.releaseQueryResults( _gridDataProvider );
// populate datagrid
_gridDataProvider = rows;
// show message in status bar
var status : F3Message = new F3Message( F3Message.STATUS_INFO, "Query came back with " + ( _gridDataProvider == null ? 0 : _gridDataProvider.length ) + " " + _selectedEntity + "s" );
showStatus( status );
TempGridProvider = new ArrayCollection();;
}
这可以工作并显示帐户名称,问题是当我使用此脚本然后将更改同步到 SalesForce 时,所有已显示的记录都被标识为需要同步,即使它们只显示了。
如果我跳过 eventQueryHandler 函数,并将我的查询链接到 OnQueryResult 函数,则没有问题,但只能显示 Account Id。
如何停止 Air 将这些记录标记为已更改,或者有更好的方法来实现这一点??
在此先感谢,非常感谢任何帮助。
罗伊
【问题讨论】:
-
所以你想要一个 DataGrid 来显示来自不同数组中不同对象的字段?
-
是的,我想要做的是显示一个带有说事件详细信息的数据网格,但不仅仅是显示帐户 ID,我还想显示实际的帐户名称。我遇到的问题是,当我将帐户名称添加到底层数据网格数组时,它会将其标记为对事件数据的更改,然后当我复制它时,它会复制已显示的每个事件
标签: apache-flex flash air adobe salesforce