Salesforce приведен из sObject к пользовательскому объекту - PullRequest
3 голосов
/ 03 июня 2011

Я написал базовый контроллер, который хочу использовать для управления разбиением на страницы данных на нескольких контроллерах.

У меня есть такой абстрактный метод

 public abstract List<sObject> getPagedData();

Тогда каждый из моих контроллеров, расширяющих базовый контроллер, реализует свою собственную версию 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, но, похоже, он не работает

Я могу использовать двоичные привязки 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 и т. Д.

1 Ответ

4 голосов
/ 04 июня 2011

Был там. К сожалению, нет способа приведения объектов непосредственно на странице visualforce.

Способ, который я рассмотрел, состоит в том, чтобы переместить всю логику разбиения на страницы в базовый контроллер в общей форме, а затем заставить дочерние контроллеры взять на себя ответственность за приведение данных в форму, ожидаемую страницей 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 ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...