0

我正在使用 visualforce 页面。我在页面中使用数据表,并且我在每一行中都使用了一个复选框,现在我只想获取复选框值为 true 的那些行,代码如下所示。

<apex:page controller="searchDuplicate">
<apex:pageBlock title="Searching for Duplicate Contacts Record">
 <center>
     <apex:form>
         <apex:dataTable id="dTable" value="{!selectedContactList}" var="cn" border="1" cellpadding="5">
            <apex:column headerValue="Name" value="{!cn.Name}" />
            <apex:column headerValue="Email" value="{!cn.Email}" />
            <apex:column headerValue="Select">
                <apex:inputCheckbox/>
            </apex:column>
         </apex:dataTable>
         <apex:commandButton value= "Delete Selected"/>
    </apex:form>
 </center>
</apex:pageBlock> 
</apex:page>
4

1 回答 1

0

出于多种原因,我不会为此使用 JavaScript。一方面,Visualforce 处理使跟踪列表中的组件 ID变得棘手。当列表包含标准或自定义 SObject 时,处理此问题的最佳方法是使用 Apex 中的包装类。然后您可以像这样访问您的值(其中 c 是包装的联系人):

<apex:column headerValue="Name" value="{!cn.c.Name}" />
<apex:column headerValue="Email" value="{!cn.c.Email}" />
<apex:inputCheckbox value="{!cn.theBoolean}"/>

请注意,cn.theBoolean 不是 cn.c.theBoolean。这是因为您的联系人记录现在包含在自定义 Apex 类中,如下所示:

public List<ContactWrapper> selectedContactList {get; set;}

// Inner-class
public class ContactWrapper
{
   public Contact c {get; set;}
   public Boolean theBoolean {get; set;}

   public ContactWrapper(Contact c)
   {
       this.c = c;
   }

...

希望有帮助。

于 2013-05-08T14:53:26.980 回答