2014-11-12 2 views
0

У меня есть компонент combox box в dojo datagrid, напримерКак заполнить dijit.form.ComboBox, вызывая URL-адрес, который будет возвращать данные JSON?

var tacStore = {items: []}; Tac

И у меня есть кнопка, когда я нажал кнопку am, пытаясь заполнить поле Combo, используя код ниже.

 function loadTimeZones() { 

     dojo.xhrGet({ 
       //url: "/AAORPCAdapterServicesWeb/RPCAdapter/httprpc/TimeZoneService/getTimeZones", 
       url: "/AAORPCAdapterServicesWeb/RPCAdapter/httprpc/DeliverableService/getAllTacs", 
       handleAs:"json", 
       load: createTimeZoneStore, 
       error: function(error,ioargs){ 
        console.log(error); 
       } 
      }); 
     return false; 
    } 

     function createTimeZoneStore(response) { 
     console.log("createTimeZoneStore::response:: "+response); 
     if (response.result != null) { 
      var timezone = []; 
      for(var resultCounter=0; resultCounter<response.result.length;resultCounter++) 
      { 
       timezone[resultCounter] = {}; 
       timezone[resultCounter]['name']=response.result[resultCounter]; 
       console.log("createTimeZoneStore::response.result[resultCounter]:: "+response.result[resultCounter]); 
      } 
      console.log("createTimeZoneStore::tacStore::tacs: "+tacStore); 
      tacstore= new dojo.data.ItemFileWriteStore({data:{items:timezone}}); 
     } 
     return false; 
    } 

Получать ответ. Но значения не отображаются в поле со списком. И когда я нажимаю на поле со списком, получаю ошибку, как this.fetch не является функцией

ответ

1

Сначала вы используете ItemFileWriteStore, который является старым dojo/data/api API. В поле Combo используется новый API dojo/store/api (в частности, вы можете использовать реализацию dojo/store/Memory).

var myStore = new Memory({data: timezone}); 

Кроме того, вы создаете магазин, но не подключаете его к ComboBox. Если вы программно создавать ComboBox, используйте

var myComboBox = new ComboBox({store: myStore}); 
myComboBox.placeAt(/* wherever you like */); 
myComboBox.startup(); 

Если ComboBox уже создан (либо программно, либо с помощью разметки с data-dojo-id), используйте

myComboBox.set('store', myStore); 
/* you may need to startup the ComboBox after this - but I am not sure */ 
myComboBox.startup(); 
+0

В этом коде, это создание нового выпадающий, но в моем случае у меня уже есть поле со списком. Мне нужно установить магазин по-разному. –

+0

Мой ответ уже относится к обоим случаям. Во всяком случае, как оно создается? Разметка или программно? – Elad

Смежные вопросы