как получить выбранное значение для Kendo DropDownList

Я не могу понять, как определить, какой элемент выбран в раскрывающемся списке my kendo. Мой взгляд, определяет его модель, как:

@model KendoApp.Models.SelectorViewModel

ViewModel определяется как:

public class SelectorViewModel
{
    //I want to set this to the selected item in the view
    //And use it to set the initial item in the DropDownList
    public int EncSelected { get; set; }

    //contains the list if items for the DropDownList
    //SelectionTypes contains an ID and Description
    public IEnumerable<SelectionTypes> ENCTypes
}

и на мой взгляд у меня есть:

@(Html.Kendo().DropDownList()
                    .Name("EncounterTypes")
                    .DataTextField("Description")
                    .DataValueField("ID")
                    .BindTo(Model.ENCTypes)
                    .SelectedIndex(Model.EncSelected)
                )

этот раскрывающийся список содержит значения, которые я ожидаю, но мне нужно передать выбранное значение обратно на мой контроллер, когда пользователь нажимает кнопку отправки. Все работает нормально, за исключением того, что у меня нет доступа к тому, какой элемент был выбран из действие контроллера [HttpPost]. Итак, как назначить значение DropDownList скрытому полю формы, чтобы оно было доступно контроллеру?

5 ответов


возможно, вы должны использовать конструкцию DropDownListFor из списка Kendo, как это, на ваш взгляд:

@(Html.Kendo().DropDownListFor(m => m.EncSelected)
                    .Name("EncounterTypes")
                    .DataTextField("Description")
                    .DataValueField("ID")
                    .BindTo(Model.ENCTypes)
                    .SelectedIndex(Model.EncSelected)
                )

таким образом, когда вы отправляете, он будет доступен в запросе POST, и вам не нужно будет помещать скрытое поле в любом месте.

но если вам по какой-то причине нужно использовать скрытое поле, поместите его туда, подпишитесь на событие select выпадающего списка и поставить с помощью JQuery (например) поместите выбранный элемент на скрытый поле.

это ваш выбор:)


для тех, кто нашел это интересно, как получить выбранное значение в JavaScript, это правильный ответ:

$("#EncounterTypes").data("kendoDropDownList").value();

из документации: http://docs.telerik.com/kendo-ui/api/javascript/ui/dropdownlist#methods-value


при выборе значения из выпадающего списка и в событии selec мы можем получить выбранное значение следующим образом:

@(Html.Kendo().DropDownList()
              .Name("booksDropDown")
              .HtmlAttributes(new { style = "width:37%" })
              .DataTextField("BookName")
              .DataValueField("BookId")
              .Events(x => x.Select("onSelectBookValue"))
              .DataSource(datasource => datasource.Read(action => action.Action("ReadBookDropDow", "PlanningBook").Type(HttpVerbs.Get)))
              .OptionLabel("Select"))

javascript функция, как следующее,

   function onSelectBookValue(e) {    

                    var dataItem = this.dataItem(e.item.index());
                    var bookId = dataItem.BookId;
                 //other user code
    }

Я считаю, что это поможет кому-то

спасибо


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

Итак, вот строка для получения любых данных, запрошенных в раскрывающемся списке kendo.

$("#customers").data("kendoDropDownList").dataSource._data[$("#customers").data("kendoDropDownList").selectedIndex].colour;

просто измените ID клиентов на id, который вы дали tot he Kendo выпадающего списка.


обновленная демо

$("#EncounterTypes").kendoDropDownList().val();