Поле со списком mvc kendo загружается очень медленно

Я реализовал элемент управления combox кендо, который заполняет 10 000 записей. Существует задержка во время загрузки формы, а также при выборе поля со списком для просмотра списка. Как лучше всего решить эту проблему с производительностью. Если вы заметили, для этой комбинации реализована функция каскадирования. Он фильтрует на основе значения кода страны из другого комбо.

кендо комбо

   <div class="form-group">
                @Html.LabelFor(model => model.Name1, htmlAttributes: new { @class = "control-label col-md-4" })

                <div class="col-md-8">
                    <div class="editor-field">
                        @(Html.Kendo().ComboBoxFor(model => model.CustomerMasterDataId)

                 .HtmlAttributes(new { style = "width:100%" })
                .DataTextField("CustomerNumberName")
                .Placeholder("Select...")
                .DataValueField("CustomerMasterDataId")
                .Filter("contains")
                .MinLength(3)
                .DataSource(dataSource => dataSource
                      .Read(read =>
                      {
                          read.Action("RequestHeader_CustomerData", "Request")
                              .Type(HttpVerbs.Post)
                              .Data("GetSalesOfficeFilter");
                      }).ServerFiltering(true)
                                ).CascadeFrom("CountryCode").Filter("contains")

                   .Events(e =>
                   {
                       e.Change("onCustomerComboChange");
                   })
                        )
                    </div>
                    @Html.ValidationMessageFor(model => model.Name1, "", new { @class = "text-danger" })
                </div>

Код контроллера

public ActionResult RequestHeader_CustomerData(string id)
        {
            var response = requestRepository.GetCustomerData(id).AsQueryable().ProjectTo<CustomerViewModel>();

            var jsonResult = Json(response, JsonRequestBehavior.AllowGet);
            jsonResult.MaxJsonLength = int.MaxValue;
            return jsonResult;
        }

person Tom    schedule 26.04.2017    source источник


Ответы (1)


Возможно, вы отправляете все записи клиенту - используйте инструменты разработчика, чтобы увидеть полезную нагрузку json. Я не вижу каких-либо критериев, передаваемых вашему действию, поэтому, если есть какая-либо фильтрация, она выполняется на стороне клиента (но я не так хорошо знаком с Kendo ServerFiltering).

person Kevin Raffay    schedule 26.04.2017
comment
Фильтрация сервера - отличный способ ограничить количество элементов, возвращаемых с сервера. Здесь находится ссылка на демонстрацию функции фильтрации на стороне сервера поля со списком. - person Sandman; 27.04.2017