gpt4 book ai didi

salesforce 从 sObject 转换为自定义对象

转载 作者:行者123 更新时间:2023-12-03 13:15:53 26 4
gpt4 key购买 nike

我已经编写了一个 Base Controller ,我想用它来管理服务器 Controller 上的数据分页。

我有一个像这样的抽象方法

 public abstract List<sObject> getPagedData();

然后我的每个扩展基本 Controller 的 Controller 都实现了它们自己的 getPagedData 版本。但是返回一个特定的客户对象,例如 Foo__c

我可以从 List<sObject> 转换吗?至 List<Foo__c>在 visualforce 页面中

我的页面是这样的

  <apex:dataTable value="{!PagedData}"  var="c"   >
<apex:column >
<apex:facet name="header">Foo</apex:facet>
<apex:outputText value="{!c.Bar__r.SomeValue__c]}" />
</apex:column>

但我得到一个错误,sObject 不知道 Bar__r我曾尝试使用 dataTable 值和 outputText 进行 Cast,但它似乎不起作用

我可以使用动态绑定(bind) http://www.salesforce.com/us/developer/docs/pages/Content/pages_dynamic_vf.htm但是我该怎么做

<apex:outputText value="{0, number, $###,###}">
<apex:param value="{!c.Amount__c}" />
</apex:outputText>
<apex:outputText value="{0,date,dd/MM/yyyy}">
<apex:param value="{!c.Date_Of_Birth__c}" />
</apex:outputText>

当我收到错误消息时说它需要一个 DateTime 对象等

最佳答案

去过那里。不幸的是,没有办法直接在 visualforce 页面中转换对象。

我解决这个问题的方法是将所有分页逻辑以通用形式移动到您的基本 Controller 中,然后让子 Controller 负责将数据转换为您的 visualforce 页面期望的形式。

public List<Foo__c> getFooPagedData() {
List<Foo__c> fooPagedData = new List<Foo__c>();
for(SObject record : getPagedData()) {
fooPagedData.add((Foo__c) record));
}
return fooPageData;
}

您也可以考虑使用 StandardSetController来控制你的分页。它适用于自定义对象和大多数标准对象,但不适用于自定义 ApexClasses 和一些标准对象。也就是说,您仍然需要转换结果集,因为它要从其 getRecords() 方法返回一个列表。

关于salesforce 从 sObject 转换为自定义对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6223412/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com