как получить выбранное значение для 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 выпадающего списка.