2015-10-16 2 views
1

Я новичок в развитии Salesforce. Я не могу создать таблицу записей пользовательских объектов на странице визуальной силы, доступной для сообщества. Я могу получить доступ к отдельной записи, используя класс-оболочку. Однако я не могу отобразить таблицу, и если я использую список объектов-оболочек в вершине: значение повтора, я получаю эту ошибку (поскольку они не являются SObjects):Нужна таблица для пользовательского объекта для пользователя сообщества VF.

может использоваться только с SObjects или объектами Visualforce полевой компонент разрешимый ".

Мне также необходимо поддерживать встроенное редактирование после его разрешения. Доступен ли пользовательский доступ к объектам для пользователей сообщества клиентов? Проблема возникает только в том случае, если O доступ через портал сообщества. Любой способ достижения встроенной таблицы редактирования пользовательских объектов?

VF страница

<apex:page controller="FHController" > 
<apex:form > 
    <apex:repeat value="{!fhList}" var="rec"> 
     Series: <apex:outputField value="{!rec.Series__c}" /> 
    </apex:repeat> 
</apex:form> 
</apex:page> 

Контроллер

public class FHController { 
    public List<Funding_History__c> fhList {get; set;} 

    public FHController() { 
     String id = ApexPages.currentPage().getParameters().get('id'); 
     fhList = [SELECT id, Series__c, Date__c, Amount__c, Valuation__c, Investors__c FROM Funding_History__c WHERE Account__c = :id]; 
    } 

    public PageReference save() { 
     System.debug('COUNT: ' + fhList.size()); 
     update fhList; 
     return null; 
    } 
} 

Спасибо!

ответ

0

Вам не нужны классы-обертки для отображения SObject на VF-странице. Вам нужно просто выбрать набор объектов Funding_History__c и не обертывать его. Затем вы сможете получить эти объекты на VF-странице в переменной {! FhList}. Для встроенного редактирования вы можете использовать вершина: inlineEditSupport. Вот цитата из документации SF:

Этот компонент обеспечивает встроенную поддержку редактирования и различные компоненты контейнера. Для поддержки встроенного редактирования этот компонент также должен быть в теге.

Компонент может быть только потомком следующих тегов: «apex: dataList», «apex: dataTable», «apex: form», «apex: outputField», «apex: pageBlock», «apex: pageBlockSection "," apex: pageBlockTable "," apex: repeat ".

Смотрите также: атрибут inlineEdit из «апекса: подробно»

А вот короткий пример того, как это выглядит для контакта объекта (ваш случай очень похож, вам просто нужно изменить контроллер страницы и SObject, которые вы обрабатываете):

<apex:page standardController="Contact"> 
    <apex:form > 
     <apex:pageBlock mode="inlineEdit"> 
      <apex:pageBlockButtons > 
       <apex:commandButton action="{!edit}" id="editButton" value="Edit"/> 
       <apex:commandButton action="{!save}" id="saveButton" value="Save"/> 
       <apex:commandButton onclick="resetInlineEdit()" id="cancelButton" value="Cancel"/> 
      </apex:pageBlockButtons> 
      <apex:pageBlockSection > 
       <apex:outputField value="{!contact.lastname}"> 
        <apex:inlineEditSupport showOnEdit="saveButton, cancelButton" 
         hideOnEdit="editButton" event="ondblclick" 
         changedStyleClass="myBoldClass" resetFunction="resetInlineEdit"/> 
       </apex:outputField> 
       <apex:outputField value="{!contact.accountId}"/> 
       <apex:outputField value="{!contact.phone}"/> 
      </apex:pageBlockSection> 
     </apex:pageBlock> 
    </apex:form> 
</apex:page> 

Итак, вы можете исследовать дальше таким образом.

0

Почему бы не использовать <apex:pageBlockTable>? Это также разрешит вашу первую проблему (не сможет отобразить таблицу).

Смежные вопросы