You need to sign in to do that
Don't have an account?
James L.
StandardSetController.AddFields not working
Here's my sample code.
AddFields, if located in constructor, works; if not, will cause exception:
System.SObjectException: SObject row was retrieved via SOQL without querying the requested field:
<apex:page standardController="account" extensions="LearnVFaddFields" recordSetVar="accounts"> <apex:form > <apex:commandButton value="Change" action="{!changeFields}"/> <apex:pageblock > <apex:pageblockTable value="{!accounts}" var="acct"> <apex:repeat value="{!fields}" var="f"> <apex:column value="{!acct[f]}"/> </apex:repeat> </apex:pageblockTable> </apex:pageblock> </apex:form> </apex:page> public with sharing class LearnVFaddFields { ApexPages.StandardSetController controller; public List <String> fields { get; private set; } public LearnVFaddFields(ApexPages.StandardSetController controller) { List <String> fields = new List <String>{'Name', 'Rating'}; this.controller = controller; updateRows(fields); } private void updateRows(List <String> fields) { this.fields = fields; controller.reset(); controller.AddFields(fields); } public PageReference changeFields() { List <String> fields = new List <String>{'Phone', 'type'}; updateRows(fields); return null; } }
I worked with this awhile back, and as I remember its only allowed in the constructor.