我有以下用于Kendo MVVM DropDownList的html:
<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 :(得分: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);
答案 1 :(得分:0)
我设法手动设置下拉列表中的值而不诉诸 数据值原语=&#34;真&#34; 因为我需要访问所选值并显示其他字段。
以下是解决方案:
var id = 1004;
var dataItem = responseTypeDDL.responseTypes.get(id); //get the id in your datasource
responseTypeDDL.set("selectedsystemResponse", dataItem);