2014-07-22 98 views
0

我有一個劍道MVVM的DropDownList下面的HTML:Kendo MVVM Dropdown - 如何根據其他數據設置初始值?

   <select id="responseTypeDDL" 
        data-role="dropdownlist" 
        data-text-field="SystemResponseTypeCode" 
        data-value-field="SystemResponseTypeId" 
        data-bind="value: selectedSystemResponseTypeCode, source: responseTypes"> 
       </select> 

這是我的視圖模型:

 SC.ViewModels.Reference.ResponseTypeDataSource.read(); 

     var responseTypeDDL = kendo.observable({ 
      responseTypes: SC.ViewModels.Reference.ResponseTypeDataSource, 
      selectedSystemResponseTypeCode: null, 
      setSelectedSystemResponseTypeCode: function (code) { 
       this.selectedSystemResponseTypeCode = code; 
      }, 
     }); 

     kendo.bind($("#responseTypeDDL"), responseTypeDDL); 

     // after reading data, I call the method to set the selected value like this: 
     self.ResponseTypeDDL.setSelectedSystemResponseTypeCode(results.code); 

的ResponseTypeDataSource.read()方法返回的 「XML」 的列表,「JSON 」。這是SystemResponseTypeCode字段。我還從數據庫 中讀取另一個數據項並檢查其響應類型。假設它是「JSON」。如何將下拉菜單設置爲選擇「JSON」?

+0

能否請您更新,你已經嘗試設置下拉的值與代碼的問題? –

+0

我沒有嘗試設置值。我不知道從哪裏開始...... – Scott

+0

如果要在加載詳細信息後綁定視圖,可以按照設置下拉菜單的相同方式進行設置。例如,請參閱示例:http://jsfiddle.net/D_Learning/m9W3g/ –

回答

1

所有這部分首先似乎是錯誤

setSelectedSystemResponseTypeCode: function (code) { 
    this.selectedSystemResponseTypeCode = code; 
}, 

您應該確保調用set()方法而修改的觀察變量,否則它可能無法更新綁定:

this.set("selectedSystemResponseTypeCode", code); 

並針對您的實際問題

你需要設置data-value-primitive="true"爲了只用ID(Kendo Docs)工作(請注意下面的變化,value: selectedSystemResponseTypeId

<select id="responseTypeDDL" 
    data-role="dropdownlist" 
    data-text-field="SystemResponseTypeCode" 
    data-value-field="SystemResponseTypeId" 
    data-value-primitive="true" 
    data-bind="value: selectedSystemResponseTypeId, source: responseTypes"> 
</select> 
SC.ViewModels.Reference.ResponseTypeDataSource.read(); 

var responseTypeDDL = kendo.observable({ 
    responseTypes: SC.ViewModels.Reference.ResponseTypeDataSource, 
    selectedSystemResponseTypeCode: null, 
    selectedSystemResponseTypeId: null, 
    setSelectedSystemResponseTypeId: function (id) { 
     this.set("selectedSystemResponseTypeId", id); 
    }, 
}); 

kendo.bind($("#responseTypeDDL"), responseTypeDDL); 

// Get your id 
var id = ...  
responseTypeDDL.setSelectedSystemResponseTypeId(id); 

工作例如:http://dojo.telerik.com/AbIm/8

0

我已經成功手動設置下拉列表中的值而不訴諸於 data-value-primitive =「true」 ,因爲我需要訪問選定的值並顯示其他字段。

這裏的解決方案:

var id = 1004; 
var dataItem = responseTypeDDL.responseTypes.get(id); //get the id in your datasource 
responseTypeDDL.set("selectedsystemResponse", dataItem);