2014-07-22 100 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);