我是一名对 Salesforce 比较陌生的开发人员。在我当前的项目中,我需要将名为 MyClass__c 的自定义对象的列表视图中选定的记录 ID 作为参数传递给 Apex 控制器,但我不确定如何执行此操作。
根据我的研究,我似乎需要使用 Apex 控制器和 Visualforce,但我不知道如何实现。有人可以帮我解决这个问题的代码吗?
**创建 APEXContorller **
public class AccountController {
public List<String> accountIds { get; set; }
public AccountController() {
accountIds = ApexPages.currentPage().getParameters().get('ids') != null
? ApexPages.currentPage().getParameters().get('ids').split(',')
: new List<String>();
System.debug('Account IDs: ' + accountIds);
}
public void processAccounts() {
System.debug('Processing Accounts with IDs: ' + accountIds);
List<Account> selectedAccounts = [SELECT Id, Name FROM Account WHERE Id IN :accountIds];
}
}
**创建 VisualForce **
<apex:page controller="AccountController">
<apex:form>
<apex:pageMessages />
<apex:commandButton value="Process Selected Accounts" action="{!processAccounts}" rerender="resultPanel"/>
<apex:outputPanel id="resultPanel">
<apex:repeat value="{!accountIds}" var="accId">
<p>Selected Account ID: {!accId}</p>
</apex:repeat>
</apex:outputPanel>
</apex:form>
</apex:page>
添加链接到ListView自定义按钮 /apex/AccountControllerPage?ids={!GETRECORDIDS($ObjectType.Account)}
您有一个列表视图按钮,您希望勾选一些复选框,单击该按钮并让 VF 对选定的记录执行某些操作?
抛弃
GETRECORDIDS
,我们不需要它。
阅读“标准设置控制器”。
如果您修改类以接受
public AccountController(ApexPages.StandardSetController ssc){...
对象(您当前的构造函数不接受任何参数),则 ssc.getSelected()
将包含用户勾选的 ID。
这是一个完整的工作示例:https://developer.salesforce.com/docs/atlas.en-us.pages.meta/pages/pages_quick_start_massupdate.htm