如何创建可能值的组合框

时间:2013-09-03 18:12:37

标签: rally appsdk2

有没有办法使用工件的某个属性可以承担的属性动态填充组合框?

e.g。

我在“用户故事”上设置了自定义字段。我希望能够使用此自定义字段的所有可能值填充组合框,而无需对其进行硬编码。

1 个答案:

答案 0 :(得分:0)

在下面的代码中,组合框会自动填充下拉类型的自定义字段的允许值:

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

                items: [
                    {
                        xtype: 'container',
                        itemId: 'kbFilter'
                    },
                    {
                        xtype: 'container',
                        itemId: 'grid',
                        width: 800
                    }
                ],

                launch: function() {
                    this.down('#kbFilter').add({
                        xtype: 'checkbox',
                        cls: 'filter',
                        boxLabel: 'Filter table by custom field',
                        id: 'kbCheckbox',
                        scope: this,
                        handler: this._onSettingsChange
                    });

                    this.down('#kbFilter').add({
                        xtype: 'rallyattributecombobox',
                        cls: 'filter',
                        model: 'Defect',
                        field: 'MyKB',                                    
                        listeners: {
                            ready: this._onKBComboBoxLoad,
                            select: this._onKBComboBoxSelect,
                            scope: this
                        }
                    });
                },


                _onKBComboBoxLoad: function(comboBox) {
                    this.kbComboBox = comboBox;

                    Rally.data.ModelFactory.getModel({
                        type: 'Defect',
                        success: this._onModelRetrieved,
                        scope: this
                    });
                },

                _getFilter: function() {
                    var filter = [];

                    if (Ext.getCmp('kbCheckbox').getValue()) {
                        filter.push({
                            property: 'MyKB',                                 
                            operator: '=',
                            value: this.kbComboBox.getValue()
                        });
                    }
                    return filter;
                },

                _onKBComboBoxSelect: function() {
                    if (Ext.getCmp('kbCheckbox').getValue()) {
                        this._onSettingsChange();
                    }
                },
                _onSettingsChange: function() {
                    this.grid.filter(this._getFilter(), true, true);
                },

                _onModelRetrieved: function(model) {
                    this.grid = this.down('#grid').add({
                        xtype: 'rallygrid',
                        model: model,
                        columnCfgs: [
                            'FormattedID',
                            'Name',
                            'MyKB'                 
                        ],
                        storeConfig: {
                            context: this.context.getDataContext(),
                            filters: this._getFilter()
                        },
                        showPagingToolbar: false
                    });
                }
            });

在这个例子中,我有一个下拉字段,其中包含名称:myKB和显示名称:我的KB。 在WS API中,名称显示为带有前置c_,如c_myKB中所示。 但是,如果我使用c_myKB,则会出现此错误:

Uncaught Rally.ui.combobox.FieldValueComboBox._populateStore(): field config must be specified when creating a Rally.ui.combobox.FieldValueComboBox

使用字段的显示名称,不含空格。 以下是显示此应用的截图: enter image description here