如何将选定的记录 ID 从自定义对象列表视图传递到 Apex 控制器?

问题描述 投票:0回答:1

我是一名对 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)}

salesforce apex visualforce
1个回答
0
投票

您有一个列表视图按钮,您希望勾选一些复选框,单击该按钮并让 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

© www.soinside.com 2019 - 2024. All rights reserved.