我创建了一个visualforce页面,作为Opportunity的相关列表。它显示与商机相关的报价复选框列表。 visualforce相关列表具有一个调用顶点进程的自定义按钮,它还有一个按钮,用于从相关列表visualforce页面创建新引用。问题是,当我单击我的自定义新按钮(称为新报价)时,按钮不会重定向到新的报价页面,因为我正在尝试重定向。相反,它会在新选项卡中打开我的visualforce相关列表。这是页面代码的一部分:
<apex:pageBlock>
<div align="center" draggable="false">
<apex:commandButton value="Apply Quote to Oppty" action=" {!ApplyQuoteToOpp}" />
<apex:commandButton value="New Quote" action="{!NewQuote}" />
</div>
<apex:pageblockTable value="{!lstcheckedquotes}" var="quo">
<apex:column >
<apex:inputCheckbox value="{!quo.selected}" />
</apex:column>
<apex:column value="{!quo.qte.quotenumber}" />
<apex:column headerValue="Quote Name">
<apex:outputLink value="{!URLFOR($Action.Quote.View, quo.qte.id)}" target="_blank">{!quo.qte.name}</apex:outputLink>
</apex:column>
<apex:column value="{!quo.qte.expirationdate}"/>
<apex:column value="{!quo.qte.totalprice}" />
<apex:column value="{!quo.qte.discount__c}" />
<apex:column value="{!quo.qte.createddate}" />
<apex:column value="{!quo.qte.createdbyid}"/>
</apex:pageblockTable>
</apex:pageBlock>
这是管理新报价按钮的扩展控制器代码:
public PageReference NewQuote()
{
Quote newquote;
Id qid;
newquote.opportunityid=opp.id;
insert newquote;
qid=newquote.id;
system.debug('newquote id is ' +qid);
PageReference pageref = ApexPages.currentPage();
pageref = New PageReference('/' +qid);
pageref.setRedirect(true);
return pageref;
}
单击“新建引号”按钮后,它会在新选项卡中打开我的visualforce相关列表,如附图所示。我希望它打开刚刚通过机会链接创建的新报价。我究竟做错了什么?我在春&#19; 18。
答案 0 :(得分:0)
我猜它是pagref的调用。首先你说pagref是当前页面,在调用之后你用new定义它 尝试下面的内容:
PageReference pr = Page.<NameOfVFPage>;
pr.getParameters().put('qid', param);
答案 1 :(得分:0)
以下是我解决问题的方法。代码如下:
Quote newquote = New Quote();
Id qid;
newquote.opportunityid=opp.id;
newquote.name= 'newquote';
insert newquote;
qid=newquote.id;
//system.debug('newquote id is ' +qid +' and name is ' +newquote.name);
String baseurl = system.url.getSalesforceBaseUrl().toExternalForm();
String redirect = baseurl+'/'+qid;
//system.debug('baseurl is ' +baseurl );
//system.debug('redirect is ' +redirect);
PageReference pr = new PageReference(redirect);
pr.setRedirect(true);
return pr;