【问题标题】:Adobe Flex Salesforce problem converting account ids to account nameAdobe Flex Salesforce 问题将帐户 ID 转换为帐户名称
【发布时间】:2010-11-23 11:22:02
【问题描述】:

我正在使用 Adob​​e 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


【解决方案1】:

我认为您不需要操纵底层对象。有两种方法可以让数据呈现在 DataGrid 中。

选项 1 - 创建另一个非托管 ValueObject 来保存您需要在 DataGrid 中显示的值。将收到的值复制到新的 ValueObject 中。

选项 2 - 在呈现给定列中的每个单元格时,使用 DataGridColumn 上的 labelFunction 从外部获取数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-23
    • 1970-01-01
    • 1970-01-01
    • 2021-01-31
    • 2018-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多