Salesforce多选选项列表可以用于任意数据而不仅仅是sObjects吗?

时间:2011-10-12 15:59:03

标签: salesforce visualforce

我想我可能会遗漏一些东西,但我看不出如何使用内置的多选择选项列表控件来处理除sObject字段以外的任何内容。

我说的是控件,其中包含标有“可用”和“已选定”的2个列表对象,其间带有箭头,用于在列表之间移动项目。对于用户来说,此控件是一种更容易且更易于发现的方式,可选择多个项目,然后选择selectList控件,需要Shift和Ctrl来选择多个项目。

Page with pictured example

使用selectList我不需要特定的sObject - 我可以将用户选择存储在我的控制器成员中,我甚至可以创建一个方法来提供有效值列表 - 这个方法可以是硬编码的,动态计算甚至使用查询来查找一些实时数据。

有没有办法使用花式选项列表控件,只是没有任何对特定sObject的引用,只是一个字符串值列表?

2 个答案:

答案 0 :(得分:1)

不幸的是,使用任何标准字段类型(例如日期或多选选项列表)的唯一方法是让字段由SObject支持。

对我来说,当需要在Visualforce页面上使用这些类型的字段时,我将专门创建一个Object,以便为字段提供后端。在Apex控制器中,只需实例化您的对象(无需提供任何值)并在页面上引用该对象的字段。

虽然从配置方面看起来效率可能不高,但它有许多额外的好处,例如使用默认UI(自动受SFDC所做的任何改进)以及利用任何内置验证。

如果您没有使用SObject支持该字段,那么可能会有一些jquery多选项可用。我已经看过很多,但还没有真正测试过。

答案 1 :(得分:1)

你班上的

public List<SelectOption> getStoryItems()
{
    List<SelectOption> options = new List<SelectOption>();
    options.add(new SelectOption('SAM','Sam I Am'));
    options.add(new SelectOption('GEORGE','George of the Jungle'));
    options.add(new SelectOption('DORA','Dora the Explorer'));
    return options;
}
String[] stories= new String[]{};
public String[] getStories() 
{
    return stories;
}

public void setStories(String[] stories) 
{
    this.stories= stories;
} 
在您的页面中

<apex:selectList value="{!stories}" multiselect="true">
     <apex:selectOptions value="{!getStoryItems}"/>            
</apex:selectList>

结果将以逗号分隔,如果您不想选择多个,只需将multiselect设置为false