【问题标题】:get selected values of MultiSelect Picklist in VisualForce在 VisualForce 中获取 MultiSelect Picklist 的选定值
【发布时间】:2013-06-05 17:39:02
【问题描述】:

我有多选选项列表,我想获取插入和更新操作的选定值。

<apex:page standardController="Change_Request__c" sidebar="false" extensions="Change_RequestController"> 
  <apex:selectList label="Select Pasenger(s)" value="{!Change_Request__c.Passenger_Name__c}" multiselect="true" onfocus="getSelectedID('{!$Component.empid}');" >
      <apex:selectOptions value="{!pax}" />
  </apex:selectList>

这是我的扩展:

public class Change_RequestController {
  private final Change_Request__c changer;
  public List<selectOption> pax;
  public Change_RequestController(ApexPages.StandardController controller) {
    this.changer = (Change_Request__c)controller.getRecord();
  }
  public List<selectOption> getPax() {
    List<selectOption> options = new List<selectOption>();
    String fullName;
    for (Passenger_Info__c p : [SELECT Id,First_Name__c,Name  from Passenger_Info__c ]) {
      fullName = (p.First_Name__c == null)?'':p.First_Name__c+' '+p.Name; 
      options.add(new selectOption(fullName, fullName));
     }
     return options;
  }
  public List<selectOption> setPax() {
    List<selectOption> options = new List<selectOption>();
    for (String pa : changer.Passenger_Name__c.split(',') ) {
      options.add(new selectOption(pa, pa));
     }
     return options;
  }
}

【问题讨论】:

    标签: salesforce apex-code visualforce


    【解决方案1】:

    将控制器更改为

    public class Change_RequestController {
      public Change_Request__c changer{get;set;}
      public Change_RequestController(ApexPages.StandardController controller) {
        this.changer = (Change_Request__c)controller.getRecord();
      }
      public List<selectOption> getPax() {
        List<selectOption> options = new List<selectOption>();
        String fullName;
        for (Passenger_Info__c p : [SELECT Id,First_Name__c,Name  from Passenger_Info__c ]) {
          fullName = (p.First_Name__c == null)?'':p.First_Name__c+' '+p.Name; 
          options.add(new selectOption(fullName, fullName));
         }
         return options;
      }
    }
    

    和页面到

    <apex:selectList label="Select Pasenger(s)" value="{!changer.Passenger_Name__c}" multiselect="true" onfocus="getSelectedID('{!$Component.empid}');" >
          <apex:selectOptions value="{!pax}" />
      </apex:selectList>
    

    【讨论】:

    • 控制器正在接受更改,但视觉页面显示:错误:未知属性 'Change_Request__cStandardController.changer'
    • 所以我做到了,我得到了这个错误:Visualforce Error Help for this Page System.SObjectException: SObject row was retrieved through SOQL without querying the requested field: Change_Request__c.Passenger_Name__c 所以我之前添加了这一行this.changer = (Change...controller.addFields(new String[] {'Passenger_Name__c'}); 错误消失但选项仍未选中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-15
    • 2012-02-03
    • 2018-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多