2012-05-08 26 views
0

如何獲取所選fname的組合框?如何獲得在dojo中選擇的組合框項目的ID

這裏是我的代碼..

var fS = new Memory({ //store for the combo 
    data: [ 
     {fN:"", fId:""} 
    ] 
}); 
var fCombo = new ComboBox({   //combo box 
     id: "fCombo", 
     name: "fCombo", 
     value: "Select",    
     searchAttr: "fName" 
    }, "fCombo");  
    fCombo.store = fStore; 
    dojo.xhrPost({ 
    url: "XXX", 
    handleAs: "json", 
    load: function(response, ioArgs){    
      fCombo.store.data = response.xx; 
      return response; 
      }, 
    error: function(response, ioArgs){ 
      console.log("Error", response+' '+ioArgs); 
      return response; 
      } 
     }); 

dojo.connect(dijit.byId("fCombo"), 'onChange',function(e){ 
    //code to write based on f id 
} 

我想這個..

var Id = fStore.getValue(dijit.byId("fCombo").data, "fName"); 

,但不能。它說,對象不supprt這個propertty

請幫助。 。!

回答

2

這是抱怨,因爲dijit.byId("farmCombo")返回ComboBox,它不支持'.data'。

而不是使用'connect',請嘗試使用'watch'。有許多東西可以觀看。 '價值'會讓你得到純粹的價值變化,但如果你聽'物品'變化,你會得到完整的新舊項目,從中你可以檢索到你的物品ID。

例如

farmCombo.watch("item", function(what, oldVal, newVal) { 
    // selected farmid is newVal.farmId 
}); 

下面是它顯示你選擇的ID在一個單獨的文本框的樣本:

http://jsfiddle.net/RoystonS/cH6hf/

如果不指定要觀看的價值,你的回調會告訴你所有的變化,它可以非常有用。