2

我想我可能遗漏了一些东西,但我看不到如何将内置的多选选项列表控件用于除 sObject 字段之外的任何内容。

我说的是控件,它具有 2 个标记为“可用”和“已选择”的列表对象,中间带有箭头以在列表之间移动项目。与 selectList 控件相比,此控件是用户选择多个项目的一种更容易且更容易发现的方式,后者需要 Shift 和 Ctrl 才能选择多个项目。

带有图片示例的页面

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

有没有办法使用花哨的选择列表控件,仅不引用特定的 sObject,只是一个字符串值列表?

4

2 回答 2

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>

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

于 2012-01-11T23:20:08.823 回答
1

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

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

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

如果您对没有 SObject 支持该字段一无所知,则可能有一些可用的 jquery 多选选项。我已经看到了很多,但还没有真正测试过。

于 2011-10-13T02:06:51.767 回答