Classe StandardSetController

Les objets StandardSetController permettent de créer des contrôleurs de liste semblables aux (ou en tant qu'extensions des) contrôleurs de liste Visualforce prédéfinis fournis par Salesforce. La classe StandardSetController contient également un objet prototype. Il s'agit d'un sObject unique contenu dans la classe Visualforce StandardSetController. Si les champs de l'objet prototype sont définis, ces valeurs sont utilisées lors de l'action de sauvegarde. Cela signifie que les valeurs sont appliquées à tous les enregistrements dans la collection de contrôleurs. Il est utile pour écrire des pages qui effectuent des mises à jour en masse (en appliquant des modifications identiques dans les champs d'une collection d'objets).
Remarque
Les champs qui sont requis dans d'autres objets Salesforce restent requis lorsqu'ils sont utilisés par l'objet prototype.

Instanciation

Vous pouvez instancier un StandardSetController selon l'une des méthodes suivantes :
  • À partir d'une liste de sObjects :
    List<account> accountList = [SELECT Name FROM Account LIMIT 20];
    
    ApexPages.StandardSetController ssc = new ApexPages.StandardSetController(accountList);
  • À partir d'un localiseur de requête :
    ApexPages.StandardSetController ssc = 
    
    new ApexPages.StandardSetController(Database.getQueryLocator([SELECT Name,CloseDate FROM Opportunity]));
Remarque
La limite maximale est de 10 000 enregistrements pour un StandardSetController. L'instanciation d'un StandardSetController en utilisant un localiseur de requête qui renvoie plus de 10 000 enregistrements entraîne la levée d'une LimitException. Cependant, l'instanciation d'un StandardSetController avec une liste contenant plus de 10 000 enregistrements ne lève pas d'exception, mais les enregistrements en excès sont tronqués.

Méthodes

Les méthodes StandardSetController sont toutes appelées et exécutées dans une instance particulière d'un StandardSetController.

Le tableau ci-dessous présente les méthodes d'instance pour StandardSetController.

Nom Arguments Type de renvoi Description
cancel System.PageReference Renvoie la PageReference de la page d'origine, si elle est connue, ou la page d'accueil.
first Void Renvoie la première page d'enregistrements.
getCompleteResult Boolean Indique si l'ensemble contient plus d'enregistrements que la limite maximale. Si la valeur est false, le nombre d'enregistrements est supérieur à la quantité que vous pouvez traiter en utilisant le contrôleur de liste. La limite maximale est de 10 000 enregistrements.
getFilterId String Renvoie l'ID du filtre actuellement en contexte.
getHasNext Boolean Indique s'il existe d'autres enregistrements après l'ensemble de pages actuel.
getHasPrevious Boolean Indique s'il existe d'autres enregistrements avant l'ensemble de pages actuel.
getListViewOptions System.SelectOption[] Renvoie une liste de vues de liste disponibles pour l'utilisateur actuel.
getPageNumber Integer Renvoie le numéro de page de l'ensemble de pages actuel. Notez que la première page renvoie 1.
getPageSize Integer Renvoie le nombre d'enregistrements inclus dans chaque ensemble de pages.
getRecord sObject Renvoie le sObject qui représente les modifications apportées aux enregistrements sélectionnés. Il récupère l'objet prototype que contient la classe.
getRecords sObject[] Renvoie la liste des sObjects dans l'ensemble de pages actuel. Cette liste est immuable, c.-à-d. que vous ne pouvez pas appeler clear() dessus.
getResultSize Integer Renvoie le nombre d'enregistrements dans l'ensemble.
getSelected sObject[] Renvoie la liste de sObjects qui ont été sélectionnés.
last Void Renvoie la dernière page d'enregistrements.
next Void Renvoie la page d'enregistrements suivante.
previous Void Renvoie la page d'enregistrements précédente.
save System.PageReference Insère les nouveaux enregistrements ou met à jour les enregistrements existants qui ont été modifiés. Une fois cette opération terminée, renvoie une PageReference à la page d'origine, si elle est connue, ou à la page d'accueil.
setFilterID String filterId Void Définit l'ID de filtre du contrôleur.
setpageNumber Integer pageNumber Void Définit le numéro de page.
setPageSize Integer pageSize Void Définit le nombre d'enregistrements dans chaque ensemble de pages.
setSelected sObjects[] selectedRecords Void Définit les enregistrements sélectionnés.

Exemple

L'exemple suivant montre comment utiliser un objet StandardSetController dans le constructeur pour un contrôleur de liste personnalisé :
public class opportunityList2Con {

    // ApexPages.StandardSetController must be instantiated

    // for standard list controllers

    public ApexPages.StandardSetController setCon { get { if(setCon == null) { setCon = new ApexPages.StandardSetController(Database.getQueryLocator( [SELECT Name, CloseDate FROM Opportunity])); } return setCon; } set; } // Initialize setCon and return a list of records

    public List<Opportunity> getOpportunities() { return (List<Opportunity>) setCon.getRecords(); } }
Le balisage Visualforce suivant montre comment utiliser le contrôleur ci-dessus dans une page :
<apex:page controller="opportunityList2Con">

    <apex:pageBlock>

        <apex:pageBlockTable value="{!opportunities}" var="o">

            <apex:column value="{!o.Name}"/>

            <apex:column value="{!o.CloseDate}"/>

        </apex:pageBlockTable>

    </apex:pageBlock>

</apex:page>
© Copyright 2000–2013 salesforce.com, inc. Tous droits réservés.
Diverses marques de commerce appartenant à leur détenteur respectif.