Добавить элемент в kendoDropDownList

69
6

Я пытаюсь добавить элемент в kendoDropDownList, он, кажется, добавляет параметр, но не устанавливает значение и текст. При проверке выбора он просто добавляет новую опцию

 <option></option>

Вот что я использую

 $("#nameList").data("kendoDropDownList")
.dataSource.add({ "text": "Joe", "value": "Joe" });

ОБНОВИТЬ

Вот моя модель источника данных и 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"});
}
}
});

спросил(а) 2015-05-12T23:24:00+03:00 5 лет, 4 месяца назад
1
Решение
105

Не уверен, что именно вы хотите, но вы можете загружать параметры из источника данных, а затем добавлять больше к списку после того, как был 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>

ответил(а) 2015-05-13T00:58:00+03:00 5 лет, 4 месяца назад
106

После некоторых поисков это было довольно просто, но это работало именно для того, что мне нужно.

$("#people_list").getKendoDropDownList().dataSource.insert({
person_id: "John",
name: "John"
})

ответил(а) 2015-05-13T22:57:00+03:00 5 лет, 4 месяца назад
80

Вы можете добавить новый элемент в источник данных после его загрузки с помощью requestEnd.

requestEnd: function (e) {
e.response.push({text: "Joe", value: "Joe"});
}

Я обновил другой скрипт пользователя, чтобы показать, что он работает. Пример jsFiddle

ответил(а) 2015-05-12T23:31:00+03:00 5 лет, 4 месяца назад
40

Использовать это:

<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,
});

DEMO

ответил(а) 2015-05-12T23:32:00+03:00 5 лет, 4 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема