自定义Visualforce相关列表新按钮不重定向

时间:2018-03-09 19:49:17

标签: redirect salesforce visualforce

我创建了一个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。

Visualforce related list on Opportunity Page

Full Visualforce Page After New Quote button is clicked

2 个答案:

答案 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;