Javascript 将项目添加到kendoDropDownList
我试图向kendoDropDownList添加一个项目,它似乎添加了选项,但没有设置值和文本。检查“选择”按钮只会添加一个新选项Javascript 将项目添加到kendoDropDownList,javascript,jquery,kendo-ui,kendo-dropdown,Javascript,Jquery,Kendo Ui,Kendo Dropdown,我试图向kendoDropDownList添加一个项目,它似乎添加了选项,但没有设置值和文本。检查“选择”按钮只会添加一个新选项 <option></option> 更新 这是我的数据源模型和建议的requestEnd,但这些值似乎弄乱了 datasource_people = new kendo.data.DataSource({ type: "json", serverFiltering: true, transpo
<option></option>
更新
这是我的数据源模型和建议的requestEnd,但这些值似乎弄乱了
datasource_people = new kendo.data.DataSource({
type: "json",
serverFiltering: true,
transport: {
read: {
dataType: 'json',
type: 'GET',
url: '/restful/people/'
}
},
filter: {
field: "status",
operator: "eq",
value: 1
},
schema: {
data: function(response) {
return response.data.plaintiffs;
},
model: {
id: "person_id",
fields: {
person_id: {type: "number"},
name: { type: "string"}
}
},
errors: "error",
total: function(response) {
return response.data.total;
}
}
});
后来
$("#people_list").kendoDropDownList({
dataTextField: "text",
dataValueField: "value",
dataSource: {
datasource_people,
requestEnd: function (e) {
e.response.push({text: "John", value: "John"});
}
}
});
在使用加载数据源后,可以将新项添加到数据源中 我已经更新了其他用户的小提琴,向您展示了它的工作原理 使用以下命令:
<input id="nameList" value="1" />
var data = [
{ text: "Joe", value: "Joe" },
{ text: "Joe", value: "Joe" },
{ text: "Joe", value: "Joe" }
];
// create DropDownList from input HTML element
$("#nameList").kendoDropDownList({
dataTextField: "text",
dataValueField: "value",
dataSource: data,
index: 0,
});
不确定您到底想要什么,但您可以从数据源加载选项,然后在启动dataBound后将更多选项追加到列表中
$("#nameList").kendoDropDownList({
dataTextField: "text",
dataValueField: "value",
dataSource: {
transport: {
read: {
dataType: 'json',
type: 'GET',
url: '/restful/companies'
}
}
},
dataBound:onDataBound
});
<script>
function onDataBound(e) {
e.sender.dataSource.add({ "text": "Joe", "value": "Joe" });
}
</script>
经过一些搜索,这是非常简单的,但这正是我所需要的工作
$("#people_list").getKendoDropDownList().dataSource.insert({
person_id: "John",
name: "John"
})
谢谢,但是我应该提到我已经在列表中加载了选项。此方法将清除所有当前选项,而不是附加到列表中。如何随新数据一起调用原始数据源?传输:{read:{dataType:'json',type:'GET',url:'/restful/companys'}}您可以将数据推入新数据,然后再次运行,因此我们使用数据属性初始化下拉列表。我找不到有关DataBound的数据属性的任何信息。我也尝试了这个方法,但似乎不起作用:函数onDataBounde{e.sender.dataSource.add{text:John,value:John};}var dropdownlist=$nameList.datakendoDropDownList;dropdownlist.binddataBound,onDataBound;这似乎是可行的,而且比我需要的行要长,但出于某种原因,所有的值和文本只有在选中时才会显示为“未定义”。奇怪。如果你的回答是向上投票或打分,那就太好了,因为它解决了你的问题。您可以发布另一个带有“未定义”问题的问题。顺便说一句,您的dataTextField和dataValueField字段是错误的。
$("#nameList").kendoDropDownList({
dataTextField: "text",
dataValueField: "value",
dataSource: {
transport: {
read: {
dataType: 'json',
type: 'GET',
url: '/restful/companies'
}
}
},
dataBound:onDataBound
});
<script>
function onDataBound(e) {
e.sender.dataSource.add({ "text": "Joe", "value": "Joe" });
}
</script>
$("#people_list").getKendoDropDownList().dataSource.insert({
person_id: "John",
name: "John"
})