2013-08-20 84 views
1

如何從一個可迭代組件傳遞參數給我的控制器?我正在使用actionSupport和一個輸入複選框在我的控制器中調用一個操作方法。我需要將兩個值傳回給我可以在內部類中引用的控制器,並在內部類的兩個屬性中設置值。將參數從可迭代組件傳遞給控制器​​

這裏是我的VF頁的相關部分:

<apex:pageBlock id="participantBlock">   
     <apex:pageBlockButtons location="top" id="topBtnParticipant"> 
      <apex:commandButton id="btnParticipant" value="Add Participant" action="{!addParticipant}" reRender="participantTable" /> 
     </apex:pageBlockButtons> 
     <apex:pageBlockSection title="Participants" columns="1" id="participantSection"> 
      <apex:pageBlockTable id="participantTable" value="{!participantLinesForPage}" var="part"> 
       <apex:column style="white-space:nowrap;text-align:center;" width="4%"> 
        <apex:commandLink rerender="participantTable" action="{!deleteParticipant}"> 
         <apex:param name="del" value="{!part.iterate}"/> 
         <apex:image id="deleteImage" value="{!URLFOR($Resource.Icons, 'delete.png')}" width="16" height="16"/> 
        </apex:commandLink> 
       </apex:column> 
       <apex:column headerValue="Contact" width="30%"> 
        <apex:inputHidden value="{!part.contactId}" id="targetContactId" /> 
        <apex:inputText value="{!part.contactName}" id="targetContactName" onFocus="this.blur()" disabled="false" style="width:175px;" /> 
        <a href="#" onclick="openContactLookupPopup('{!$Component.targetContactName}', '{!$Component.targetContactId}', 'userLookupIcon{!part.iterate}', 'accountLookupIcon{!part.iterate}'); return false" ><img onmouseover="this.className = 'lookupIconOn';this.className = 'lookupIconOn';" onmouseout="this.className = 'lookupIcon';this.className = 'lookupIcon';" onfocus="this.className = 'lookupIconOn';" onblur="this.className = 'lookupIcon';" class="lookupIcon" src="/s.gif" id="contactLookupIcon{!part.iterate}" /></a> 
       </apex:column> 
       <apex:column headerValue="Add Task" width="6%" headerClass="columnAlignment" styleClass="columnAlignment"> 
        <apex:inputCheckbox value="{!part.selected}" disabled="{!IF(part.selected == true, true, false)}" > 
         <apex:actionSupport event="onchange" action="{!addTaskFromParticipant}" oncomplete="this.disabled=true;" rerender="taskTable" /> 
         <apex:param value="{!part.contactId}" assignTo="{!whoid}" /> 
         <apex:param value="{!part.contactName}" assignTo="{!whoname}" /> 
        </apex:inputCheckbox> 
       </apex:column> 
       <apex:column headerValue="User" width="30%"> 
        <apex:inputHidden value="{!part.userId}" id="targetUserId" /> 
        <apex:inputText value="{!part.userName}" id="targetUserName" onFocus="this.blur()" disabled="false" style="width:175px;" /> 
        <a href="#" onclick="openUserLookupPopup('{!$Component.targetUserName}', '{!$Component.targetUserId}', 'contactLookupIcon{!part.iterate}', 'accountLookupIcon{!part.iterate}'); return false" ><img onmouseover="this.className = 'lookupIconOn';this.className = 'lookupIconOn';" onmouseout="this.className = 'lookupIcon';this.className = 'lookupIcon';" onfocus="this.className = 'lookupIconOn';" onblur="this.className = 'lookupIcon';" class="lookupIcon" src="/s.gif" id="userLookupIcon{!part.iterate}" /></a> 
       </apex:column> 
       <apex:column headerValue="Account" width="30%"> 
        <apex:inputHidden value="{!part.accountId}" id="targetAccountId" /> 
        <apex:inputText value="{!part.accountName}" id="targetAccountName" onFocus="this.blur()" disabled="false" style="width:175px;" /> 
        <a href="#" onclick="openAccountLookupPopup('{!$Component.targetAccountName}', '{!$Component.targetAccountId}', 'contactLookupIcon{!part.iterate}', 'userLookupIcon{!part.iterate}'); return false" ><img onmouseover="this.className = 'lookupIconOn';this.className = 'lookupIconOn';" onmouseout="this.className = 'lookupIcon';this.className = 'lookupIcon';" onfocus="this.className = 'lookupIconOn';" onblur="this.className = 'lookupIcon';" class="lookupIcon" src="/s.gif" id="accountLookupIcon{!part.iterate}" /></a>     
       </apex:column> 
      </apex:pageBlockTable> 
     </apex:pageBlockSection> 
    </apex:pageBlock> 

我試圖使用<apex:param>組件和assignTo屬性。但是,那永遠不會發生。

當用戶選擇的複選框,我想通過的ContactID和CONTACTNAME該特定記錄在<apex:pageBlockTable>和設置它等於屬性whoidwhoname

我然後可以在我的內部類引用這些屬性並將這些值設置爲等於我在我的VF頁面中其他位置使用的內部類中定義的一些屬性。有沒有辦法做到這一點?

感謝您的任何幫助。 此致敬禮。

回答

0

變化

<apex:actionSupport event="onchange" action="{!addTaskFromParticipant}" oncomplete="this.disabled=true;" rerender="taskTable" /> 
         <apex:param value="{!part.contactId}" assignTo="{!whoid}" /> 
         <apex:param value="{!part.contactName}" assignTo="{!whoname}" /> 

<apex:actionSupport event="onchange" action="{!addTaskFromParticipant}" oncomplete="this.disabled=true;" rerender="taskTable" > 
          <apex:param value="{!part.contactId}" assignTo="{!whoid}" /> 
          <apex:param value="{!part.contactName}" assignTo="{!whoname}" /> 
</apex:actionSupport> 
+0

感謝回答我的職務。我試了一下,但是當我運行代碼時,'whoid'和'whaname'屬性仍然是空的。我的操作方法正在進入並執行,但屬性爲空。這些值沒有傳回給控制器?我已經嘗試過使用ActionFunction,但是這肯定不起作用,因爲它在迭代組件中不受支持。任何其他想法? – Dman100

+0

apex:actionFunction out of apex:pageBlockTable

+0

由於'apex:params'引用'pageBlockTable'中的var並且這些params現在在'pageBlockTable'之外,所以我得到未知屬性'part'。 – Dman100

相關問題