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

时间:2019-07-30 12:06:50

标签: salesforce apex visualforce

角色分配给每个员工,每个员工都有一个复选框。无论何时选中复选框并从下拉列表(角色列表中的角色)中选择角色,单击更新按钮后,应将新角色分配给员工。 我如何获取它。我已将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>

顶点控制器

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()
    {

    }

}

1 个答案:

答案 0 :(得分:0)

像这样?除非您做了一些JavaScript魔术,否则在Visualforce中不需要ID。这可以在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;
}