2012-05-13 64 views
1
var xhrArgs = { 
    url: "../Person/GetAll", 
     handleAs: "json", 
     preventCache: true, 
     load: function (data, ioargs) { 
      var jsonString = dojo.toJson(data) 
      var dataStore = new dojo.store.Memory({ data: 
      dojo.fromJson(jsonString) }); 
    var personCmb = dijit.byId('cmbSingers'); 
         if (personCmb == null) 
{ 
    var cobox = new dijit.form.ComboBox({ id: "cmbSingers", name: "Name", store: dataStore, searchAttr: "Name" }, "cmbSingers"); 

           cobox.startup(); 
          } 

    function cmbSingers_OnSelected() { 

       alert(dijit.byId('cmbSingers').get('value')); **this return the Text, But I want to get Id of Select value**  

      } 
+0

你需要告訴,你的json看起來如何。 combobox只有valueAttr'at-hand',所以循環你的json,同時將item.name與cobox.get(「value」)匹配並像這樣拉項目。許多商店有一個查詢設施,充分利用這種查找 – mschr

+0

它像Id,名稱,年齡,所以你可以說如何做到這一點 – pradeep

回答

0

Mkay,json是這樣嗎?

{ identifier: 'Id', items: [ { Id: '1', name:'foo', age: 12 }, { Id: '2', name:'bar', age: 30 } ] }

你在可變coboxdijit.form.ComboBox,在可變storedojo.data.ItemFileReadStore

dojo.connect(cobox, "onChange", function() { 

    var val = this.get("value"), 
    id = "", 
    matcher = new RegExp("^" + val + "$"); 

    dojo.some(store._arrayOfAllItems, function(item, idx) { 

    if(matcher.test(store.getValue(item, "name")) { 
     id = store.getValue(item, "Id"); 
     return true; // breaks .some loop 
    } 
    }); 

}); 
0

對於任何人在2016年+尋找一個解決這個...我 遇到同樣的情況,並找到一種方式來獲得的,從道場ComboBox中選定選項的值。而不是僅僅使用.value的或獲得( '值')的,使用.item.value:

dijit.byId('someComboBox').item.value 

.item將返回一個像這樣的對象供你使用: 對象{ID: 「1」 ,值:「1」,名稱:「一」}

要精心...說你用定義您的組合框的選項中進行選擇像這樣:

<select dojoType="dijit.form.ComboBox" id="someComboBox" maxlength="30"> 
    <option value=""></option> 
    <option value="1">One</option> 
    <option value="2">Two</option> 
    <option value="3">Three</option> 
</select> 

說你選擇「一個」選項。
調用dijit.byId( 'someComboBox')。值將返回「一」, 但調用dijit.byId( 'someComboBox')。item.value將返回「1」