KendoUI DropDownList — при выборе «Новый» отображать текстовое поле

У меня есть список элементов в KendoUI DropDownList. Генерируется с использованием синтаксиса Razor.

Что я хочу сделать:

  • Если пользователь не находит в списке то, что ищет, он выбирает "Новый..." (статическое значение).

  • должно отображаться скрытое текстовое поле, позволяющее им добавить новое значение

  • новое значение должно быть отправлено обратно в метод контроллера (WIP)

Что я понял:

  • Получить данные

  • статически добавить опцию «Новый»

Пока это работает хорошо:

  • Он извлекает данные из метода действия контроллера и отображает список, как и ожидалось.

  • Я могу привязать его к двум событиям: «Change» и «DataBound».

Проблема:

Я использую "готовый" метод jQuery для добавления статического значения под названием "Новый..". Это дублирует это значение. Я думаю, что это бесконечный цикл.

Так что застрял на этом этапе

В частичном представлении:

 @(Html.Kendo().DropDownListFor(model => model.ClientType)
                              .DataSource(ds => ds.Read(read => read.Action("FetchAllClientTypes", "ClientType")))
                              .DataTextField("Description")
                              .DataValueField("Id")
                              .AutoBind(true)
                              .Events(e =>
                               {
                                   e.Change("onClientTypeChange").DataBound("onClientTypeDataBound");
                               })
                              .ToClientTemplate()
                      )
                @Html.ValidationMessageFor(model => model.ClientType)

Javascript:

/*When dropdown is bound, add "New..."*/
/* Duplicates "New". Appears to be infinite. */
function onClientTypeDataBound() {
    var clientTypesDropDownList = $('#ClientType').data('kendoDropDownList');
    clientTypesDropDownList.dataSource.add({ Description: 'New...', value: '-1' });

};

/**Works**/
function onClientTypeChange() {

    alert('Testing On change');
};

person user919426    schedule 03.03.2014    source источник
comment
Является ли New... значением в раскрывающемся списке?   -  person CSharper    schedule 03.03.2014
comment
Это отображаемый текст, добавленный в раскрывающийся список. Его значение формы равно -1.   -  person user919426    schedule 04.03.2014


Ответы (1)


Все что вы описали это поддержка "из коробки" виджетом ComboBox. Если такого значения в коллекции элементов нет, значение ComboBox становится текстом, введенным пользователем. Подробнее о виджете ComboBox здесь (подробнее специально используйте кнопку getValue при игре с разными значениями).

person Petur Subev    schedule 03.03.2014
comment
Спасибо. Я смотрю на Combobox. Проблема, с которой я сталкиваюсь, заключается в том, что для пользователя не очевидно, что он вводит что-то новое. Как будто они редактируют или ищут. Поэтому, хотя я ценю ответ, он не решает исходное требование... если только вы не знаете, как заставить его вести себя как требуется или что-то близкое - person user919426; 04.03.2014