12

我不知道如何确定在我的剑道下拉列表中选择了哪个项目。我的观点将其模型定义为:

@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)
                )

这个 DropDownList 包含我期望的值,但是当用户单击提交按钮时,我需要将选定的值传递回我的控制器。一切正常,除了我无法访问从控制器的 [HttpPost] 操作中选择的项目。那么,如何将 DropDownList 的值分配给隐藏的表单字段,以便控制器可以使用它?

4

7 回答 7

32

对于那些想知道如何在 JavaScript 中获取选定值的人来说,这是正确的答案:

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

从文档:http ://docs.telerik.com/kendo-ui/api/javascript/ui/dropdownlist#methods-value

于 2016-08-19T04:30:27.047 回答
11

当从下拉列表中选择一个值时,在 select 事件中,我们可以获得如下选择的值,

@(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
    }

我相信这会帮助某人

谢谢

于 2015-07-16T11:33:51.783 回答
5

您好,我刚刚解决了这个问题,继续搜索了 2 个小时,并提出了我自己的解决方案。

因此,这是获取剑道下拉菜单中的任何数据的行。

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

只需将客户 ID 更改为您在剑道下拉菜单中提供的 ID。

于 2016-10-07T09:42:18.140 回答
2

也许您应该在您的视图中使用 Kendo DropDownList 的 DropDownListFor 构造:

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

这样,当您提交时,它将在 POST 请求中可用,您无需在任何地方放置隐藏字段。

但是如果您出于某种原因需要使用隐藏字段,请将其放在那里,订阅下拉列表的选择事件并使用 JQuery(例如)将所选项目放在隐藏字段上。

这是你的选择 :)

于 2014-05-17T08:44:27.400 回答
2

如果您还想读出下拉菜单的文本,您可以使用以下 kendo 函数获取或设置值:

$('#EncounterTypes').data("kendoDropDownList").text();

参考文献

像@Vivek Parekh 提到的那样使用它.val()是行不通的——剑道框架中没有函数 .val() 。

如果你愿意,你可以使用 jQuery 并取回值:$('#EncounterTypes').val()

于 2019-09-12T09:17:38.143 回答
0

更新了演示

$("#EncounterTypes").kendoDropDownList().val();
于 2014-05-17T09:00:14.193 回答
0

您可以像以下代码一样获取所选项目,然后使用 item.property 获取更多信息

var selectedFooType = $("#fooType").data("kendoDropDownList").dataItem();
    selectedFooType.name 
//OR
    selectedFooType.id
于 2021-06-02T12:11:26.643 回答