2017-04-26 1 views
0

J'ai implémenté un contrôle combo kendo qui remplit 10 000 enregistrements. Il y a latence pendant le chargement du formulaire ainsi qu'en sélectionnant la comboxbox pour voir la liste. Quelle est la meilleure façon d'aborder ce problème de performance? Si vous remarquez la, la fonctionnalité en cascade est implémentée pour ce combo. Il filtre en fonction de la valeur de countrycode d'un autre combo.mvc kendo zone de liste déroulante chargement très lentement

kendo combo

<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> 

code Conroller

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; 
     } 

Répondre

1

vous envoyer peut-être tous les enregistrements au client - les développeurs d'utiliser des outils pour voir la charge utile JSON. Aucun critère n'est transmis à votre action, donc si un filtrage est en cours, il se fait côté client (mais je ne connais pas très bien le Kendo ServerFiltering).

+0

Le filtrage du serveur serait un excellent moyen de limiter le nombre d'éléments revenant du serveur. [Ici] (http://demos.telerik.com/kendo-ui/combobox/serverfiltering) est un lien vers la démo de la fonctionnalité de filtrage côté serveur de la zone de liste déroulante. – Sandman