2013-01-02 70 views
0

讓我們假設我有一個頁面代碼:無法參數<apex:param>傳遞給相關的方法

 <apex:pageBlockTable value="{!allContacts}" var="c" > 
      <apex:column value="{!c.id}" headervalue="ID"/> 
      <apex:column value="{!c.FirstName}" headervalue="First Name"/> 
      <apex:column value="{!c.LastName}" headervalue="Last Name"/> 
      <apex:column value="{!c.Title}" headervalue="Title"/> 
      <apex:column value="{!c.Company}" headervalue="Company"/> 
      <apex:column> 
       <apex:commandButton action="{!addToRecruits}" value="Recruit"> 
        <apex:param assignTo="{!leadID}" name="leadID" value="{!c.id}"/> 
       </apex:commandButton> 
      </apex:column> 
     </apex:pageBlockTable> 

及相應的控制:

public String leadID { get; set; } 

    public PageReference addToRecruits() { 
     System.debug('LeadID is: ' + leadID); 
     List<Lead> potentialCandidate = [SELECT id, FirstName, lastName, Title, Company FROM Lead WHERE id = :leadID]; 
     delete potentialCandidate; 

     return null; 
    } 

看來我不能通過leadIDaddToRecruits()方法。你有什麼想法,爲什麼這樣?

UPDATE:

我可以想辦法解決這個問題。我沒有使用SOQL進行查詢,而是用這種風格接近:

public String leadID { get; set; } 
public PageReference addToRecruits() { 

    Lead candidate=new Lead(id=leadID); 
    .... 
} 
+0

對於未來的Salesforce有關的問題,你」如果你發佈了這個專輯,你可能會得到更多的關注ed stack Exchange Salesforce site at http://salesforce.stackexchange.com/ – sorenkrabbe

+0

是的,我剛剛發現...從現在開始我會這樣做... – Soask

+1

我看到你已經這樣做 - 爲了將來的參考,同樣的問題在這裏討論:http://salesforce.stackexchange.com/questions/5874/unable-to-pass-a-parameter-apexparam-to-a-relevant-method – sorenkrabbe

回答

0

添加「重新呈現」屬性到頂點:命令按鈕和它開始工作 - 喜歡的東西 <apex:commandButton rerender="myForm" action="{!addToRecruits}" value="Recruit">

0

有一種將參數傳遞給控制器​​的方法,但它也會使用commandLink。我的意思是,我們需要使用

  • 命令鏈接和命令按鈕

如:

<apex:commandLink action="{!applyNow}" id="applybuttonLink" style="text-decoration:none"> 
<apex:commandButton value="Apply now"/> 
<apex:param name="passId" assignTo="{!passId}" value="{!Vac.id}"/> 
</apex:commandLink> 

控制器:

public String vacancyId{get;set;}