2013-04-04 125 views
0

无法从meter_Select填充card_Select。 我每次使用set方法来设置和存储meter_Select被更改。dojo1.8 - 从选择1填充选择2

下面请看看我的代码: -

var store = new Memory({ 
data:[ 
{id:'', label:"Choose one of the cards"}, 
{id:'testdata1970_05', label:"Mk7ABC Card"}, 
{id:'testdata1970_10', label:"Mk7CBC Card"}, 
{id:'testdata2060_03', label:"Mk10BC Card"}, 
]}); 

var memoStore1 = new ObjectStore({objectStore:store}); 
var meter_Select = new Select 
     ({store:memoStore1, 
     style:{width:'140px'}, 
     }, "node_meterSelect"); 
     meter_Select.startup(); 

var card_Select = new Select 
({style:{position: 'absolute', margin: '20px', left:'60px', width:'140px'}, 
id:'cardSelect' 
}, "node_cardSelect"); 

on(meter_Select, 'change', function(evt) 
console.debug('Selected Card = '+ meter_Select.value); 
request.post('listofcards.php',{data:{cardX : meter_Select.value}, 
handleAs:"json"}).then(

function(response) 
{var memoStore2 = new Memory({data:response});//ok 
console.debug("Loaded into memoStore2 ->" +memoStore2); 

var combx = registry.byId('cardSelect');//ok to be undefined. 
combx.set('store', memoStore2); 
combx.set('value',""); 
combx.set('placeHolder',"Choose one of the batch..."); 
combx.set('searchAttr', 'mfg_code'); 
combx.startup(); 
},//function(response) 

function(error)//ok 
    alert('Getting a list of cards = '+error); 
}//function(error) 
)//then.});//meter_Select.on 

任何想法? 克莱门特

+0

刚刚意识到标签必须用来代替值。但我仍然想使用Select。那么,如何在商店中更改该值可以替换为标签? – user1739825 2013-04-04 08:57:40

回答

1

this jsfiddle第二选择从Ajax请求填充,即从第一触发。

它的关键是在此功能,在新的ObjectStore为选择创建的,setStore()方法被调用,以更新的dijit:

function onDataLoaded(response) { 
     var memory = new Memory({ 
      data: response 
     }); 
     var store = new ObjectStore({ 
      objectStore: memory 
     }); 
     console.log("response", response, "store", store); 

     var cardSelect = registry.byId('cardSelect'); 
     console.log(cardSelect); 
     cardSelect.setStore(store); 
    }