如何将自定义对象列表视图选中的记录ID传递至Apex控制器?
实现MyClass__c列表视图选中记录ID传递到Apex控制器
以下是完整落地的实现步骤及代码:
1. 创建Apex控制器
该控制器负责接收列表视图传递的选中记录ID,并提供自定义处理逻辑:
public class MyClassController { public List<String> myClassIds { get; set; } public MyClassController() { // 从页面参数中获取选中的记录ID集合 String idsParam = ApexPages.currentPage().getParameters().get('ids'); myClassIds = idsParam != null ? idsParam.split(',') : new List<String>(); System.debug('选中的MyClass__c记录ID: ' + myClassIds); } // 处理选中记录的业务方法 public void processSelectedRecords() { System.debug('开始处理选中记录,ID列表: ' + myClassIds); // 示例:查询选中的记录,可在此添加业务逻辑 List<MyClass__c> selectedRecords = [SELECT Id, Name FROM MyClass__c WHERE Id IN :myClassIds]; } }
2. 创建Visualforce页面
作为列表视图自定义按钮的跳转目标,展示选中记录ID并触发控制器处理逻辑:
<apex:page controller="MyClassController"> <apex:form> <apex:pageMessages /> <!-- 触发处理逻辑的按钮 --> <apex:commandButton value="处理选中的MyClass记录" action="{!processSelectedRecords}" rerender="resultPanel"/> <!-- 展示选中的记录ID --> <apex:outputPanel id="resultPanel"> <apex:repeat value="{!myClassIds}" var="recordId"> <p>选中的记录ID: {!recordId}</p> </apex:repeat> </apex:outputPanel> </apex:form> </apex:page>
注:保存页面时建议命名为MyClassProcessingPage,后续配置按钮会用到该名称。
3. 为MyClass__c列表视图添加自定义按钮
- 进入Salesforce设置,打开对象管理器中的
MyClass__c对象; - 点击按钮、链接和操作 > 新建按钮或链接;
- 配置参数:
- 显示类型:列表视图按钮
- 行为:在新窗口中打开
- 内容源:URL
- URL内容:
/apex/MyClassProcessingPage?ids={!GETRECORDIDS($ObjectType.MyClass__c)}
- 保存按钮后,将其添加到MyClass__c的列表视图布局中,即可在列表视图选中记录后点击按钮传递ID到控制器。
内容的提问来源于stack exchange,提问作者whitili
相关产品推荐
相关产品推荐

