DataValueField отсутствует в кендо Автозаполнение - PullRequest
0 голосов
/ 04 февраля 2019

Я использую управление автозаполнением kendo в своем проекте MVC (фильтрация на стороне сервера). Он правильно отображает данные.Но проблема в том, что когда я отправляю данные на сервер, идентификатор значения автозаполнения отсутствует.Потому что в этом элементе управления нет атрибута DataValueField.Ниже приведен код, который я использую

@(Html.Kendo().AutoComplete()
    .Name("Patient")
    .Placeholder("Enter Name")
    .DataTextField("TextField")
    .Filter("contains")
    .MinLength(3)
    .HtmlAttributes(new { style = "width:100%" })
    .DataSource(source =>
    {
      source.Read(read =>
      {
         read.Action("function", "controller")
         .Data("onAdditionalData");
      })
         .ServerFiltering(true);
  })
)

Как я могу отправить значение на сервер.

Спасибо ..

1 Ответ

0 голосов
/ 04 февраля 2019

Поскольку AutoComplete помощник не имеет атрибута DataValueField, вам нужно использовать другой помощник HTML в качестве обходного пути для передачи другого значения свойства.Предположим, что у вашей viewmodel есть такая настройка:

public class ViewModel
{
    // ID property example
    public int PatientID { get; set; }

    // other properties
}

Вы можете создать скрытое поле или текстовое поле только для чтения, чтобы хранить свойство идентификатора, упомянутое выше, в представлении Razor:

@Html.HiddenFor(m => m.PatientID)

Затем назначьте егоАтрибут value из клиентского скрипта путем создания функции, которая читает индекс элемента из помощника по автозаполнению:

function selectPatient(e) {
    var item = this.dataItem(e.item.index());
    $('#PatientID').val(item.PatientID);
}

И, наконец, устанавливает имя функции, привязанное к атрибуту Events:

@(Html.Kendo().AutoComplete()
    .Name("Patient")
    .Placeholder("Enter Name")
    .DataTextField("TextField")
    .Filter("contains")
    .MinLength(3)
    .HtmlAttributes(new { style = "width:100%" })

    // add this line
    .Events(ev => ev.Select("selectPatient"))

    .DataSource(source => {
        source.Read(read => {
            read.Action("function", "controller")
            .Data("onAdditionalData");
        })
        .ServerFiltering(true);
    })
)

Следуя этой настройке, свойство PatientID должно иметь идентификатор выбранного значения из помощника автозаполнения, когда пользователь отправил форму.

...