2

我正在尝试使用项目名称列表填充组合框。我能够成功获取所有项目名称,但我似乎无法弄清楚如何将它们作为自定义数据集添加到组合框中。我已经研究过使用其他类型的组合框(迭代、投资组合、属性等),但它们似乎没有将自定义数据添加到下拉列表的功能(除非我弄错了)。这是我用于组合框的代码:

this.down = this.add({
    xtype: 'rallycombobox',
    storeConfig: [{
        model: 'Project',
        autoLoad: true,
        fieldLabel: 'Projects:',
        data: this.project_names,
        width: field_width
    }]
});

尝试使用此代码运行时,我收到“未捕获的 TypeError:无法调用未定义的方法 'getProxy'。我无法弄清楚如何让它工作。我也尝试过以下方法:

this.down = this.add({
    xtype: 'rallycombobox',
    model: 'Project',
    fieldLabel: 'Projects:',
    data: this.project_names,
    width: field_width
});

我仍然会遇到同样的错误。谁能帮我解决我做错了什么?谢谢!

4

2 回答 2

0

这可能会帮助您:

Ext.define('CustomApp', {
extend: 'Rally.app.App',
componentCls: 'app',

launch: function() {
    //Write app code here

    var projectStore = Ext.create('Rally.data.WsapiDataStore',{
        model: 'project',
        fetch: ['Name','ObjectID'],
        autoLoad: true,
        // filters:[{
            // property:'ObjectID',
            // operator:'=',
            // value: __PROJECT_OID__
        // }],


        listeners:{
            load: function(store,records,success){
                this._updateCombo(store);
            },
            scope: this

        }



    });
    console.log('/project/',__PROJECT_OID__);
},

_loadCombo: function(myStore){

    this._myCombo = Ext.create('Ext.form.ComboBox',{
        fieldLabel: 'Choose Project',
        store: myStore,
        queryMode: 'remote',
        displayField: 'Name',
        valueField: 'Name',
        listeners: {
            select: function(combobox,records){
                console.log(records[0]["data"]["Name"]);
            }
        },
        scope:this

    });
    this.add(this._myCombo);

},
_updateCombo: function(myStore){
    if(this._myCombo === undefined){
        this._loadCombo(myStore);
    }else{
        this._myCombo.clearValue();
    }

}

});
于 2013-10-30T14:01:31.653 回答
0

如果您手头已经有一个想要在 ComboBox 中使用的项目列表,而不是Rally ComboBox,我建议您只使用Ext ComboBox。Rally ComboBox 旨在通过查询来自 rally 的数据来填充其存储 - 因此getProxy当您尝试将 Rally WSAPI 存储与本地数据混合匹配时会出现错误。

设置可能如下所示。

// The data store containing the list of Projects
var projectStore = Ext.create('Ext.data.Store', {
    fields: ['_ref', 'Name'],
    data : [
        {"_ref": "/project/12345678910", "Name": "Project 1"},
        {"_ref": "/project/12345678911", "Name": "Project 2"},
        {"_ref": "/project/12345678912", "Name": "Project 3"}
        //...
    ]
});

// Create the combo box, attached to the Projects data store
this.projectSelector = Ext.create('Ext.form.ComboBox', {
    fieldLabel: 'Choose Project',
    store: projectStore,
    queryMode: 'local',
    displayField: 'Name',
    valueField: '_ref',
    listeners:{
         scope: this,
         select: function(combobox) {
            // Do stuff here
            console.log('Ref of Project Selected: ' + this.projectSelector.getValue());

        }
    }
});

this.down('#projectSelectorContainer').add(this.projectSelector); 

希望这会有所帮助。让我们知道是否有后续问题。

于 2013-05-22T01:48:25.250 回答