需要更新已检查的员工(自定义)的角色(自定义字段)

Need to update Roles(Custom FIeld) of the Employee(Custom) those are Checked

角色分配给每个员工,每个员工都有一个复选框。每当检查复选框并从下拉列表中选择角色(从PickList的角色)中选择的角色,请在单击“更新”按钮后将新角色分配给员工。 我如何获得它..我已将 ID 分配给复选框并尝试 if Checkbox==true 然后执行特定条件但它不起作用..请指导我

VF 页面

<apex:page extensions="EmployeeSelectClassController13" standardController="Employee__c" sidebar="false">
    <apex:form >
        <apex:pageBlock >    
            <apex:pageBlockSection title="Employees" collapsible="false">
                <apex:pageBlockTable value="{!wrapEmployeeList}" var="empWrap" id="table" title="All Employees">
                    <apex:column >
                        <apex:inputCheckbox value="{!empWrap.selected}" id="inputCheckbox"/>
                    </apex:column>
                    <apex:column value="{!empWrap.emp.Name}" id="inputName" />
                    <apex:column value="{!empWrap.emp.Role__c}" id="inputRole" />      
                </apex:pageBlockTable>    
                <apex:pageBlockSection id="InfoId" columns="1" >
                    <apex:selectList size="1" value="{!SelectedValue}">
                        <apex:selectOptions value="{!statusOptions}"/>
                    </apex:selectList>
                </apex:pageBlockSection>
                <apex:commandButton value="Update" id="inputButton" action="{!updateRole}" />
            </apex:pageBlockSection>
        </apex:pageBlock>
    </apex:form> 
</apex:page>

A​​pex 控制器

public class EmployeeSelectClassController13 {
    public List<wrapEmployee> wrapEmployeeList {get; set;}
    public List<Employee__c> empRecord {get;set;}
    public string selectedValue { get;set; }
    public List<SelectOption> statusOptions { get;set; }//TO get Roles from Employee

    public EmployeeSelectClassController13(ApexPages.StandardController controller){
        if(wrapEmployeeList == null){
            wrapEmployeeList = new List<wrapEmployee>();
            for(Employee__c empList:[Select Name,Role__c from Employee__c]){
                wrapEmployeeList.add(new wrapEmployee(empList));
                autorun();
            }
        }
    }
    public class wrapEmployee{
        public Employee__c emp {get; set;}
        public Boolean selected {get; set;}

        public wrapEmployee(Employee__c e) {
            emp = e;
            selected = false;
        }
    }

    //To get all Roles(PickList) from Employee Object
    public void autoRun()
    {

        Schema.DescribeFieldResult statusFieldDescription = Employee__c.Role__c.getDescribe();
        statusOptions = new list<SelectOption>();

        for (Schema.Picklistentry picklistEntry : statusFieldDescription.getPicklistValues())
        {
            statusOptions.add(new SelectOption(pickListEntry.getValue(),pickListEntry.getLabel()));
        }
    }
    public void updateRole()
    {

    }

}

是这样的吗?您不需要 Visualforce 中的 ID,除非您使用一些 JavaScript 魔法。这完全可以在 Apex 中完成。

public void updateRole(){
    List<Employee__c> toUpdate = new List<Employee__c>();
    for(wrapEmployee wrap : wrapEmployeeList){
        if(wrap.selected){
            wrap.emp.Role__c = SelectedValue;
            // wrap.selected = false; // you could choose to untick checkboxes now?
            // or after successful update loop through them one more time and then untick
            toUpdate.add(wrap.emp);
        }
    }
    update toUpdate;
}