将输入的文本限制为组合框数据源

时间:2013-11-26 19:26:27

标签: c# jquery asp.net-mvc kendo-ui asp.net-mvc-5

我正在尝试设置我的MVC 5应用,以便用户无法输入未显示在下拉列表中的值。

我找到了以下解决方案JSFiddle Here,但我很难将其转换为Razor语法。

以下是我到目前为止的情况。我无法弄清楚的是如何让“数据源”进行检查。

<div class="form-group">
        @Html.LabelFor(model => model.loadType, new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @(Html.Kendo().ComboBox()
                    .Name("loadType")
                    .Filter(FilterType.Contains)
                    .DataTextField("Text")
                    .DataValueField("Value")
                    .BindTo(Model.LoadTypes)
                    .Suggest(true)
            )
            @Html.ValidationMessageFor(model => model.loadType)
        </div>
    </div>

    <div class="form-group">
        @Html.LabelFor(model => model.loadDescrip, new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @(Html.Kendo().ComboBox()
                    .Name("loadDescrip")
                    .Filter(FilterType.Contains)
                    .DataTextField("DocCode")
                    .DataValueField("DocCode")
                    .DataSource(source =>
                    {
                        source.Read(read =>
                        {
                            read.Action("GetCascadeDocumentNumbers", "DockDoor")
                                .Data("filterLoadDescription");
                        })
                      .ServerFiltering(true);
                    })
                    .Enable(false)
                    .AutoBind(false)
                    .CascadeFrom("loadType")
                    .Events(e =>
                        {
                            e.Change("onChange");
                        })
            )
            @Html.ValidationMessageFor(model => model.loadDescrip)
        </div>
    </div>


    function onChange() {
    var lT = $("#loadType").data("kendoComboBox").input.val();
    if (lT != "Generic") {
        var lD = $("#loadDescrip").data("kendoComboBox").input.val();

        // Here I need to compare 'lD' to what is populated in the comboBox dropdown
        var combobox = $("#loadDescrip").data("kendoComboBox");

        //this is for Testing purposes only
        alert(lD +" " + lT);
    }
};

1 个答案:

答案 0 :(得分:1)

您可以从小部件的DataSource属性中获取任何Kendo小部件的.dataSource。例如:

var loadDescripDataSource = $("#loadDescrip").data("kendoComboBox").dataSource;

从那里你可以在DataSource上调用.view()来获取数据源中的项目数组,然后遍历它们以找到你需要的东西。