Comment ouvrir un VF page popup et de passer des paramètres à cette VF page?
J'ai une VF page qui a plus de 2 champs de date et bouton de recherche.
Sur le clic de la recherche-je obtenir certains résultats. j'ai aussi un autre bouton pour imprimer ces résultats, qui n'est rien mais une nouvelle VF page pdf.
Je veux passer cette des valeurs de date dans le printVF page. je veux aussi avoir cette page, comme la popup.
J'ai le pageref avec les paramètres définis. Depuis je besoin pour ouvrir cette page popup j'ai besoin de trouver un moyen d'utiliser le pageref dans la fenêtre.ouvert.
Quelqu'un a des idées sur la façon d'accomplir cette?
Grâce
Prady
MODIFIER :Ce que j'ai fait a été de construire l'url dans le contrôleur et l'utilisation du contrôleur de la variable dans la fenêtre.ouvert. Quelque chose de très étrange se passe... La première fois les résultats de recherche sont affichés et je clique sur le bouton imprimer, les dates ne soyez pas renseignée dans la chaîne, par défaut à la date d'aujourd'hui.. si j'ai de nouveau cliquez sur le bouton imprimer les dates sont renseignées correctement sur l'url de la dateinput.
public Class1(){
System.debug('inside constructor');
fieldContainer=new DummyTable__c(); //it contains date fields for date inputs
date todays=date.today();
If (fieldContainer.Start_Date__c== null)
{
startdate1=todays;
}else
{
startdate1=fieldContainer.Start_Date__c;
}
If (fieldContainer.End_Date__c== null)
{
enddate1=todays;
}
else
{
enddate1=fieldContainer.End_Date__c;
}
}
public void search()
{
startdate1=fieldContainer.Start_Date__c;
system.debug('startdate1'+startdate1);
enddate1=fieldContainer.End_Date__c;
system.debug('enddate1'+enddate1);
system.debug('inside search()....after clicking search button');
system.debug('startdate1'+startdate1);
system.debug('url'+url);
LoadData();
}
public string geturl()
{
url='apex/VF1?Pstartdate='+string.valueof(startdate1)+'&Penddate='+string.valueof(enddate1);
return url;
}
public string geturlRec()
{
urlRec='apex/VF2?Pstartdate='+string.valueof(startdate1)+'&Penddate='+string.valueof(enddate1);
return urlRec;
}
VF Page
<script language="javascript" type="text/javascript">
function printOut()
{
window.open("{!url}");
}
function printIn()
{
window.showModalDialog("{!urlRec}","dialogWidth:800px; dialogHeight:200px; center:yes");
}
</script>
<div style="width:900px;margin:0 auto;" id="pagediv">
<span style="padding-left:30px;padding-right:10px">From </span><apex:inputfield value="{!fieldContainer.Start_Date__c}" id="startdt" style="padding-left:5px;padding-right:20px;"/>
<span style="padding-left:30px;padding-right:10px">To </span><apex:inputfield value="{!fieldContainer.End_Date__c}" id="enddt" style="padding-left:5px;padding-right:20px;"/>
<span style="padding-left:30px;padding-right:10px"><apex:commandButton action="{!search}" value="Search" ReRender="dtshipdep,dtshiprec,shippageblock"> </apex:commandButton></span>
<apex:commandButton action="{!saveDeparted}" value="Update " ReRender="dtshipdep"></apex:commandButton>
<apex:commandButton value="Print " onclick="printOut();"></apex:commandButton>
OriginalL'auteur Prady | 2012-02-09
Vous devez vous connecter pour publier un commentaire.
La force de vente moyen conseillé de générer des Url est par le biais de URLFOR() fonction. Ou, alternativement, vous pouvez créer un PageReference dans l'extension ou le code du contrôleur.
Cependant, gardez à l'esprit, avant toute forme de données peut devenir une partie de l'URL, il doit être enregistré sur le serveur et nouvellement généré pageReference, pour cette raison, vous ne pouvez pas jut cliquez sur dans la première manche.
Une façon que j'ai utilisé pour résoudre ce côté serveur à l'aide de ce code sur VF
openPopup
est un booléen qui contrôle si ce segment est rendu (transitoire, vous attribuez la valeur true lorsque vous cliquez sur le bouton ouvrir).myTarget
est unPageReference
en fonction de l'URL (vous pouvez également utiliser URLFOR ici pour générer l'URL en VF). Si vous avez d'autres questions, posez-les.Une autre option est d'avoir votre code javascript en VF qui vont ramasser l'événement clic du bouton et de construire l'URL du côté client et l'ouvrir. Vous pouvez utiliser $Composant pour localiser les champs de formulaire.
votre impression bouton a un JS gestionnaire qui invoque l'Url générée dans le précédent appel de serveur. Puis la page appelle la servir, actualise (y compris les url) de sorte que votre deuxième sur les œuvres. Vous devez être clair sur la séquence des événements
grâce mmix... il a travaillé 🙂
OriginalL'auteur mmix
Vous devriez être en mesure de transmettre les valeurs que vous avez besoin dans la chaîne de Requête.
Puis une fois que vous avez les variables d'envoyer à la nouvelle page, vous pouvez les obtenir à l'aide d'un PageReference.
String.escapeSingleQuotes
sur les paramètres avant de les utiliser dans le cadre d'une requête dynamique!Merci Matthieu... Ce que j'ai fait a été de construire l'url dans le contrôleur et l'utilisation du contrôleur de variable dans wondow.ouvert. Quelque chose de très étrange se passe... La première fois les résultats de recherche sont affichés et je clique sur le bouton, les dates ne soyez pas renseignée dans la chaîne.. si j'ai de nouveau cliquez sur le bouton imprimer les dates sont renseignées correctement sur l'url
Découvrez mmix, la réponse à l'aide de la question. Sa solution fonctionnera probablement mieux pour vous. Une autre option serait d'utiliser le Ajax Toolkit pour mettre sur pied l'URL plutôt que de l'appeler à l'Apex de la méthode à l'aide de Visualforce liaisons.
OriginalL'auteur Matt K