2013-05-21 2 views
2

Я пытаюсь заполнить combobox со списком имен проектов. Я могу успешно получить все имена Project, но я не могу понять, как добавить их в качестве настраиваемого набора данных в combobox. Я изучил использование других типов comboboxes (Iteration, Portfolio, Attribute и т. Д.), Но у них нет возможности добавлять пользовательские данные в их раскрывающийся список (если я не ошибаюсь). Вот код, который я использую для моего поля со списком:Как получить пользовательские данные в поле со списком

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 
}); 

Я до сих пор в конечном итоге с той же ошибкой Может кто-нибудь помочь мне с тем, что я делаю неправильно Спасибо

ответ

0

Если вы уже.?! есть список проектов, которые вы хотели бы использовать в ComboBox, вместо Rally ComboBox Я бы рекомендовал использовать только Ext ComboBox. Rally ComboBox предназначен для заполнения своего хранилища путем запроса данных с ралли - таким образом, ошибка 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); 

Надеюсь, это будет полезно. Сообщите нам, если есть следующие вопросы.

+0

можно ли получить список всех проектов внутри текущего проекта, что я нахожусь в (в ралли) в 'data' поле при создании хранилища данных? –

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(); 
    } 

} 

}); 
Смежные вопросы