Javascript 如何在Kendo UI Combobox中将项目手动添加到数据源中
我有一个组合框,由从servlet接收的JSON字符串填充Javascript 如何在Kendo UI Combobox中将项目手动添加到数据源中,javascript,jquery,kendo-ui,Javascript,Jquery,Kendo Ui,我有一个组合框,由从servlet接收的JSON字符串填充 $(document).ready(function() { //Combobox Init (From Servlet) var comboBoxDataSource = new kendo.data.DataSource({ transport : { read : { url : "net/samso/action/common/ComboAc
$(document).ready(function() {
//Combobox Init (From Servlet)
var comboBoxDataSource = new kendo.data.DataSource({
transport : {
read : {
url : "net/samso/action/common/ComboAction?flag=SRCHGT_IO_GB", // url to remote data source
dataType : "json",
type : 'GET'
}
},
schema : {
model : {
fields : {
key : {
type : "string"
},
value : {
type : "string"
}
}
}
}
});
//Manually add an item
comboBoxDataSource.add({key: "062", value: "Total"});
//Initialize Combobox
$("#cb_srchgt_io_gb").kendoComboBox({
dataSource : comboBoxDataSource,
dataTextField : "value",
dataValueField : "key"
})
});
在我尝试手动向datasourcecomboBoxDataSource.add({key:“062”,value:“Total”})添加一项之前,代码工作正常代码>。添加该项时,它将删除从数据源中的JSON数据填充的其他项
为什么会发生这种情况?问题在于数据源是异步初始化的,我的意思是,当组合框
初始化时,您就开始加载,但直到从服务器接收到数据后,操作才结束。然后,也只有在那时,您才应该调用该元素。将add
语句移动到示例代码的末尾甚至是不可接受的,因为从服务器加载可能需要毫秒或秒
如果要将元素添加到从服务器接收的内容中,可以使用:
$(document).ready(function () {
//Combobox Init (From Servlet)
var comboBoxDataSource = new kendo.data.DataSource({
transport: {
read: {
url : "net/samso/action/common/ComboAction?flag=SRCHGT_IO_GB", // url to remote data source
dataType: "json",
type : 'GET'
}
},
schema : {
model: {
fields: {
key : { type: "string" },
value: { type: "string" }
}
},
data: function(result) {
//Manually add an item
result.push({key: "062", value: "Total"});
return result
}
}
});
//Initialize Combobox
$("#cb_srchgt_io_gb").kendoComboBox({
dataSource : comboBoxDataSource,
dataTextField : "value",
dataValueField: "key"
})
});
您可以使用requestEnd
事件执行相同的操作,并将额外的元素推送到e.response
:
requestEnd: function (e) {
console.log("e", e);
e.response.push({key: "062", value: "Total"});
}
基本上,从服务器接收数据后触发的任何事件都是正常的。感谢您的响应。我希望手动添加的元素位于列表的顶部,而不是附加在底部。有什么办法吗?用unshift
代替push
。