Je sais que c'est comment enregistrer un enregistrement Je veux un bouton pour ne pas enregistrer l'enregistrement actuel (c.-à-d. Annuler) et accéder à la liste des enregistrements enregistrés (c.-à-d. Liste des objets pour ce type d'objet). P> quelque chose comme ça ... p>
4 Réponses :
La vue de liste d'un objet est votre URL de base / le préfixe de 3 lettres pour votre objet / o, par exemple: afin que vous puissiez simplement créer une méthode d'action qui renvoie une méthode d'action qui renvoie un PagerEference Code> avec l'URL appropriée et défini sur rediriger ( Alternativement, vous pouvez utiliser votre contrôleur comme une extension de Contrôleur standard, et juste Call Annuler sur le contrôleur standard : P> pr.sedraect (true) code>). p>
// controller extension
public class TimeSheetExtension
{
ApexPages.standardController m_sc = null;
public TimeSheetExtension(ApexPages.standardController sc)
{
m_sc = sc;
}
public PageReference doCancel()
{
return m_sc.cancel();
}
}
// page
<apex:commandButton action="{!doCancel}" value="Cancel"/>
J'essaie toujours d'utiliser les méthodes de contrôleur, car théoriquement leur protégez des changements de format URL.
Tous les identifiants d'objet pour les enregistrements de cet objet auront 3 lettres au début, mais comme le dit Jeremy, il est préférable d'utiliser les actions standard dans la mesure du possible. Vous devriez pouvoir modifier votre contrôleur en une extension juste en ajoutant un paramètre de contrôleur standard au constructeur et en modifiant la balise
standardController = "myObject__c" Extensions = "myCustomController" code>
Cela ne fonctionne pas lorsque Annuler Ajax Way en renvoyant NULL. Je sauvegarder des données non valides sur le champ Annuel et le champ donnez-moi une erreur. Lors de l'annulation, il remonte à la lecture seule, mais les données ont été modifiées vers des données non valides. Cependant, lorsque la page rafraîchissante, les données non valides ne sont pas là et les données précédentes sont affichées.
Vous devez également ajouter l'étiquette immédiate à votre bouton Annuler, de sorte que le formulaire n'exécute aucune validation avant d'effectuer l'opération d'annulation.
<apex:commandButton action="{!cancel}" immediate="true" value="Cancel"/>
Tout en appliquant Annuler l'opération Visualforce, vous devez arrêter la validation de formulaire. Utilisez ci-dessous n'importe quelle méthode pour arrêter la validation de formulaire en fonction de vos besoins.
Méthode 1: strong> P> P> P> P> P> P> P> P> P> P> Utilisant
HTML-5 dans DOCTYPE dans la page Visualforce Strong>
signifie que vous devriez utiliser HTML-FORMNOVALIDATEDATE STRAND> et Méthode 2: strong> p> Vous devez utiliser IMMÉDIAT CODE> dans Annuler Bouton. Par exemple p>
immédiat code> BLOW Need for Validation de formulaire d'arrêt. Par exemple P>
<apex:commandButton action="{!cancel}" value="Cancel" immediate="true"/>
L'une des autres réponses suggérées appeler l'action d'annulation du contrôleur standard afin que je souhaite développer cela puisqu'il m'a conduit dans la direction de résoudre mon problème similaire.
Si vous souhaitez annuler une modification en tant que demande Ajax sans Rafraîchir la page entière, déclarez l'action en tant que vide et ne renvoyez pas la référence de page, mais appelez toujours l'action «Annuler» sur le contrôle standard. Assurez-vous que le bouton de commande spécifie l'attribut RERender. P>
// controller extension public class TimeSheetExtension { ApexPages.standardController m_sc = null; public TimeSheetExtension(ApexPages.standardController sc) { m_sc = sc; } public void doCancel() { m_sc.cancel(); } } // page <apex:commandButton action="{!doCancel}" value="Cancel" rerender="container_id"/>