Rally App SDK 2.0:用于未显示displayField的用户的rallymultiobjectpicker

时间:2012-06-18 22:25:09

标签: javascript extjs rally

我正在尝试创建一个列出工作区用户的rallymultiobjectpicker。但是,它似乎没有为displayField加载任何值,无论它在listCfg中设置的是什么。文档指定默认为“名称”,我已切换到“FirstName”,“ObjectID”,“DisplayName”,“_ refoName”等。似乎没有反映任何更改,因为应该包含的div displayField的值保持为空。我检查了对象,这里是一个典型的返回示例(生成所有空字段而不是修改):

->Object
    CreationDate: null
    Disabled: false
    DisplayName: ""
    EmailAddress: ""
    FirstName: ""
    LastName: ""
    LastPasswordUpdateDate: null
    MiddleName: ""
    ObjectID: 1234567890
    OnpremLdapUsername: ""
    RevisionHistory: ""
    Role: ""
    ShortDisplayName: ""
    Subscription: ""
    TeamMemberships: ""
    UserName: ""
    UserPermissions: ""
    UserProfile: ""
    _objectVersion: "12"
    _p: "2"
    _ref: "https://rally1.rallydev.com/slm/webservice/1.33/user/1234567890.js"
    _refObjectName: "John D"
    _type: "user"
    creatable: false
    deletable: false
    groupSelected: "Available"
    matchedText: undefined
    updatable: true
    __proto__: Object

以下是使用代码的示例:

Ext.widget('rallymultiobjectpicker', {
    modelType: 'user',
    fieldLabel: 'Owners',
    listCfg: {displayField: "DisplayName", autoScroll: true},
    stateful: false,
    labelWidth: 50,
});

编辑:使用与下面答案中列出的配置类似的配置,此问题再次出现在2.0p3中。尽管在listCfg中指定了displayField,但没有显示选项文本。我还应该注意,过滤器/ customQuery似乎完全被破坏了,因为它们不能用于限制我在另一个集成多个注入器中的数据集。

1 个答案:

答案 0 :(得分:1)

您必须指定从服务器获取displayField的数据存储配置。您必须指定整个商店配置,而不仅仅是fetch参数。您还必须为filterFieldName传递配置选项,以使自动完成功能正常工作。示例配置如下:

Ext.widget('rallymultiobjectpicker', {
    modelType: 'user',
    fieldLabel: 'Owners',
    filterFieldName: 'DisplayName',
    storeCfg: {
        autoLoad: false,
        fetch: 'DisplayName',
        pageSize: 200,
        sorters: [
            {
                property: 'DisplayName',
                direction: 'ASC'
            }
        ],
        remoteGroup: false,
        remoteSort: false,
        remoteFilter: false,
        limit: Infinity
    },
    listCfg: {
        displayField: 'DisplayName'
    },
    stateful: false,
    labelWidth: 50
});