我目前在联系人记录中嵌入了一个Visualforce页面,该页面显示所有与chexckbox有效的活动,指示联系人是否为活动的成员(如果选中,则联系人为成员)。我也有一个命令按钮来保存更改。使用顶点生成visualforce码:重复喜欢像这样:Salesforce/Apex - 保存动态复选框数量
<apex:repeat value="{!campaignWrappers}" var="cm"> <div class="MailingRow"> <apex:outputText styleClass="CampaignLabel" value="{!cm.c.Name}" ></apex:outputText> <apex:inputCheckbox styleClass="CampaignCheck" value="{!cm.selected}" /> </div> </apex:repeat>
我的问题是,什么是去传递复选框值到控制器的最佳方式?理想情况下,我希望仅传递已更改的复选框,将已从选中状态变为未选中状态的复选框传递给第二个列表,其中包含从未选中状态变为已选中状态的复选框。然后我可以插入和删除这些列表。
这是一个应该在复选框上使用actionSupport标签的情况吗?
<apex:actionSupport event="onChange" action="{!updateChangeList}" />
感谢您的信息eyescream。我有点困惑。因此,在每个复选框上使用actionSupport并不是前进的方向,相反,我会对我的commandbutton执行一个操作,该操作根据上面的示例执行逻辑操作。我需要为每个复选框设置一个ID,以便我可以在控制器中识别它们吗?我无法像这样在Visualforce中设置ID:id = {!cm.c.id},因为它必须是文字? – Ronnie
ActionSupport不是魔术棒;)这是一个AJAX快捷方式,可以提交整个表单并执行操作。把它当作用户选择一个复选框的瞬间点击一下隐藏的按钮。关键是它会成为网络流量。如果你想一个接一个地发送它们 - 当然可以。你可以但不必设置ID。他们会自动设置“id”和“name”。只要不用担心,假设当方法体输入时,所有的变量都会被解析等等,随时可以使用 – eyescream
感谢您的详细解释eyescream! – Ronnie