Pra*_*ady 2 salesforce visualforce apex-code
我有一个VF页面,它有2个日期字段和搜索按钮.
点击搜索我得到一些结果.我还有另一个按钮来打印这些结果,这只是一个新的VF页面呈现为pdf.
我想将此日期值传递到printVF页面.我也想把这个页面作为弹出窗口出现.
我有参数设置的pageref.由于我需要以弹出方式打开此页面,我需要找到一种方法来在window.open中使用pageref.
任何人都有关于如何实现这一目标的想法?
谢谢
Prady
编辑:我做的是在控制器中构建URL并在window.open中使用控制器变量.发生了一些非常奇怪的事情...第一次显示搜索结果并且我点击打印按钮,日期不会填充在字符串中,它们默认为今天的日期..如果我再次单击打印按钮日期正确填充在dateinput的url上.
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;
}
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
<apex:commandButton action="{!saveDeparted}" value="Update " ReRender="dtshipdep"></apex:commandButton>
<apex:commandButton value="Print " onclick="printOut();"></apex:commandButton>
Run Code Online (Sandbox Code Playgroud)
salesforce推荐的生成URL的方法是通过URLFOR()函数.或者,您也可以在扩展/控制器代码中创建PageReference.
但是,请记住,在任何表单数据成为URL的一部分之前,必须将其发布到服务器并返回到新生成的pageReference中,因此您无法在第一次运行时单击它.
我用来解决这个服务器端的一种方法是在VF上使用这个代码
<apex:outputBlock rendered="{!openPopup}">
<script>
window.open('{!myTargetUrl}');
<script>
</apex:outputBlock>
Run Code Online (Sandbox Code Playgroud)
openPopup是一个控制是否渲染此段的bool(瞬态,当您单击打开按钮时将其设置为true).myTarget是一个PageReference基于URL(或者你可以在这里使用URLFOR在VF中生成URL).如果您还有其他问题,请询问.
另一个选择是在VF中使用您的javascript代码,它将获取按钮点击事件并构建URL客户端并打开它.您可以使用$ Component来查找表单字段.
| 归档时间: |
|
| 查看次数: |
23462 次 |
| 最近记录: |