2013-11-13 2 views
1

привет, я использую kedo ui для моего проекта asp.net mvc. Я могу использовать автозаполнение, и я получаю продукты из базы данных, которая работает нормально, но я не хочу выбирать существующие продукты то, что я должен делать, если уже продукт вводится в текстовое поле тем он должен выдавать ошибкуИспользование Kendo UI Автозаполнение, чтобы выбросить ошибку

<%= Html.Kendo().AutoComplete() 
     .Name("produciits") 
     .DataTextField("ProductName") 
     .Filter("contains") 
     .DataSource(source => { 
      source.Read(read => 
      { 
       read.Action("GetProducts", "Home"); 
      }) 
      .ServerFiltering(false); 
     }) 
%> 

ответ

1

Если я понимаю вашу проблему правильно, вы хотите, чтобы избежать повторяющихся элементов в пределах автозаполнения текстового поля с помощью некоторых сепаратора. Если это так, вам нужно подключить некоторую ручную работу в событии onChange автозаполнения, как показано в следующем фрагменте, если нет, проясните немного.

<%= Html.Kendo().AutoComplete() 
     .Name("produciits") 
     .Separator(",") 
     .DataTextField("ProductName") 
     .Filter("contains") 
     .DataSource(source => { 
      source.Read(read => 
      { 
       read.Action("GetProducts", "Home"); 
      }) 
      .ServerFiltering(false); 
     }) 
.Events(e => e.Select("onChange")) 
%> 

<script> 
    function onChange(e) { 
     var text = e.item.text(), 
      valArray = this.value().split(","); 
     if ($.inArray(text, valArray) !== -1) { 

      alert(text + " already selected"); 
      // Retaining previous values 
      e.preventDefault();    
      valArray.pop(); 
      this.value(valArray.join(",") + ","); 
     } 
    } 
</script> 

Если вы просто хотите придерживаться пунктов DataSource, я бы порекомендовал вам использовать multiselect, которая автоматически отслеживает то, что уже выбран.

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