我有一段html,其中包含一组相当大的输入控件,这些控件是从服务器返回的一组JSON数据动态生成的。
HTML控件是根据JSON数据以及与之关联的项目构建的。
下拉列表选择项使用以下属性进行绑定:
data-value-field='optionValue'
function CreateSelectList(label, i, name) {
var element = '<select data-bind=\'source:reportFormData.FormField[' + i + '].Options.Option\' data-value-field=\'optionValue\' data-text-field=\'optionText\' id=\'' + name + '\' name=\'' + name + '\' data-role=\'dropdownlist\'></select>';
return CreateFormField(label, element);
}
var ddlData = $("#ddl_location").data("kendoDropDownList");
ddlData.setDataSource(jsonData.Option);
这是创建输入选择控件的javascript:
$("#ddl_location").kendoDropDownList({
dataTextField: "optionText",
dataValueField: "optionValue",
dataSource: jsonData.Option
});
问题:我需要有选择地修改其中一个下拉列表的数据源。我无法弄清楚如何以编程方式更改数据源。
这不起作用:
ddlData.trigger("change");
ddlData.refresh();
也不是这样:
jsonData.Option
我也试过在以下之后调用它们:
Report.FormField[i].Options.Option
"Option": [ {"optionText": "All", "optionValue": "0"}, ...
的格式与原始JSON元素{
"Report": {
"report_id": "1",
"FormField": [{
"description": "End DateTime Picker",
"name": "end_date",
"label": "End Date",
"FieldType": "datepicker",
"displayOrder": "2",
"isRequired": "1",
"requiredFieldValidationMessage": "End Date is required."
},
{
"description": "Client",
"name": "ddl_client",
"label": "Client",
"FieldType": "dropdownlist",
"displayOrder": "3",
"isRequired": "0",
"Options": {
"Option": [{
"optionText": "All",
"optionValue": "0"
},
{
"optionText": "*Airport Business Center",
"optionValue": "68955"
},
{
"optionText": "*Cushman & Wakefield",
"optionValue": "68996"
},
{
"optionText": "*IBMC College ",
"optionValue": "68804"
}
...
}
的格式相同,例如$(document).ready(function(){});
这里的区别在于它是需要替换原始数据源的新数据子集。
这里是用于最初创建控件的完整JSON的摘录:
$("#foo").submit
答案 0 :(得分:0)
在dataSource上使用read():
var ddlData = $("#ddl_location").data("kendoDropDownList");
ddlData.setDataSource(jsonData.Option);
ddlData.dataSource.read();