2013-11-26 3 views
0

Я пытаюсь настроить мое приложение MVC 5, чтобы пользователи не могли ввести значение, которое не отображается в раскрывающемся списке.Предел введенный текст в combobox datasource

Я нашел следующее решение: 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

Вы можете получить DataSource для любого Кендо виджета выключения .dataSource собственности виджета. Так, например:

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

Оттуда вы можете позвонить .view() на DataSource, чтобы получить массив элементов в источнике данных, затем цикл над ними, чтобы найти то, что вам нужно.

Смежные вопросы