gpt4 book ai didi

salesforce - 如何以弹出方式打开 VF 页面并将参数传递给该 VF 页面?

转载 作者:行者123 更新时间:2023-12-04 02:12:26 26 4
gpt4 key购买 nike

我有一个包含 2 个日期字段和搜索按钮的 VF 页面。

点击搜索我得到了一些结果。我还有另一个按钮来打印这些结果,它只是一个呈现为 pdf 的新 VF 页面。

我想将这个日期值传递到 printVF 页面。我也想让这个页面弹出。

我有设置了参数的 pageref。由于我需要将此页面作为弹出窗口打开,因此我需要找到一种在 window.open 中使用 pageref 的方法。

有人知道如何实现这个吗?

谢谢

普拉迪

编辑:我所做的是在 Controller 中构建 url 并在 window.open 中使用 Controller 变量。发生了一些非常奇怪的事情...第一次显示搜索结果并单击打印按钮时,日期不会填充到字符串中,它们默认为今天的日期..如果我再次单击打印按钮,日期会正确填充在日期输入的网址上。

      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 页面

   <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>

最佳答案

Salesforce 推荐的生成 URL 的方法是通过 URLFOR() 函数。或者,您也可以在扩展/ Controller 代码中创建一个 PageReference。

但是请记住,在任何表单数据成为 URL 的一部分之前,它必须被发布到服务器并返回到新生成的 pageReference 中,因此您不能在第一次运行时直接点击它。

我用来解决这个服务器端问题的一种方法是在 VF 上使用这段代码

<apex:outputBlock rendered="{!openPopup}">
<script>
window.open('{!myTargetUrl}');
<script>
</apex:outputBlock>

openPopup 是一个 bool 值,用于控制是否呈现此段( transient ,当您单击打开按钮时将其设置为 true)。 myTarget 是一个基于 PageReference 的 URL(或者您可以在此处使用 URLFOR 在 VF 中生成 URL)。如果您还有其他问题,请提问。

另一种选择是将您的 javascript 代码放在 VF 中,它将拾取按钮单击事件并构建 URL 客户端并将其打开。您可以使用 $Component 来定位表单域。

关于salesforce - 如何以弹出方式打开 VF 页面并将参数传递给该 VF 页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9214662/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com