2013-07-07 16 views
8

Kendo ızgarasındaki yavaş performans sorunu, 1000'den fazla kayıt yüklemeye çalışırken, kılavuzun yüklenmesi yaklaşık 8 saniye sürüyor. Denetleyicinin json verisini 3 saniye içinde döndürdüğünü görebiliyorum ve kendo gridinin doldurulması zaman alıyor.Kendo ızgarası: Yavaş performans sorunu

Bir PageSize of 500 kayıt ve DataSourceRequest kullanıyorum, bu nedenle her sayfanın verileri yalnızca denetleyiciden döndürülecek. Ama yine de neşe yok.

Lütfen bana tavsiyede bulunun, şebeke performansını nasıl geliştirebilirim.

sizin ızgarada UI sanallaştırma etkinleştirme

@(Html.Kendo().Grid<Model>() 
.Name("KendoTestGrid")  
.Columns(columns => 
{ 

    columns.Bound(p => p.Column5) 
      .Width("18%")    
      .ClientTemplate("#= formatResult(format(column5, '')) #") 
      .EditorTemplateName("Column5") 
      .ClientFooterTemplate("<span href='\\#' id='total'>Total : </span>");    
    columns.Bound(p => p.Column6) 
     .EditorTemplateName("Column6") 
     .ClientTemplate("#= format(column6, '') #")      
     .ClientFooterTemplate("<span href='\\#' id='spanfooter'></span>")    
     .Width("23%"); 
    columns.Bound(p => p.column7)    
     .ClientTemplate("<span href='\\#' id='#=Id #'>#= format(Column7,'')#</span>") 
     .ClientFooterTemplate("<span href='\\#' id='spansum'></span>") 
     .HtmlAttributes(new { Class = "number" }) 
     .Width("18%"); 
    columns.Bound(p => p.column8) 
     .EditorTemplateName("column8")    
     .ClientFooterTemplate("Total:") 
     .ClientFooterTemplate("<span href='\\#' id='TotalSum1'></span>")   
     .Width("23%");  
}) 

.DataSource(dataSource => dataSource 
    .Ajax()  
    .Batch(true) 
    .ServerOperation(true)  
    .Read(read => read.Action("Action", "Controller").Data("getData")) 
    .Create(c => c.Action("Action", "Controller").Data("getData2")) 
    .Update(update => update.Action("Action", "Controller").Data("getData3")) 
    .PageSize(500) .Events(x => x.DataBound("ongriddatabound") 
    .Edit("ongridedit") 
    .Change("ongridchange")) 
    .Editable(editing => editing.Mode(Kendo.Mvc.UI.GridEditMode.InCell)) 

    .Filterable() 
    .Groupable()  
    .Sortable() 
    .Scrollable() 
    .Pageable() 
    .Selectable(s => s.Mode(GridSelectionMode.Single).Type(GridSelectionType.Row)) 
    .Resizable(resize => resize.Columns(true)) 
    .AutoBind(false) 
) 
+1

kapatın. 1200 elemanlı bir ızgara oluşturdum ve sayfa boyutu 500'ümde tarayıcımda/dizüstü bilgisayarımda hiçbir şey yapmıyor. Burada deneyebilirsiniz http://jsfiddle.net/OnaBai/27g3s/. Karmaşık şablonlar mı yoksa böyle bir şey mi kullanıyorsunuz? – OnaBai

+1

Lütfen, ızgara yapmak için kullandığınız kodu ve kullandığınız tüm özel satırları veya düzenleme şablonlarını ekleyin. – CodingWithSpike

+0

Sütunlarımda Clienttemplate ve Editortemplate kullanıyorum. EditorTemplate, iki sütunda sayısal metin kutusuna sahip. – user1870358

cevap

1

aşağıda kodumu bulabilirsiniz.

$(document).ready(function(){ 
     $("#grid").kendoGrid({ 
     scrollable: { 
      virtual: true // <--- This 
     } 
     }); 
    }); 

Bu yardımcı olmazsa, sunucu tarafında çağrı yapmayı öneririm.

+0

Şebeke yavaş olacak mı? ClientTemplate ve EditTemplate. – user1870358

+0

Diğer yorum posterlerinin talep ettiği gibi bir kod göndermeniz gerekecek. – dcarson

+0

Sanal kaydırma işleminin, [Telerik] (https://docs.telerik.com/kendo-ui/controls/data-management/grid/appearance#limitations-for-virtual-scrolling) – sonyisda1

3

Sahip olduğunuz denetleyici/işlem koduna bakmamız gerekiyor.

Verilerinizi döndürdüğünüz kapsayıcıya bağlı olarak, kendimden gelen kılavuz için en iyi performansı elde etmek için deneyimlerimden, IQueryable kabını kullanmanız ve bu kapsayıcıya karşı ToDataSourceResult işlevini çalıştırmanız gerekir.

public ActionResult Action([DataSourceRequest] DataSourceRequest request, string ExtraParameters) 
{ 
    DBContext db = new DBContext(); 
    IQueryable<Model> models = db.Models; 
    return Json((models).ToDataSourceResult(request)); 
} 

DÜZENLEME: Ayrıca ServerOperation orijinal soruya verdiğiniz ızgara kodu eklemek misiniz (doğru) seçeneğini

+0

için gruplandırma ile uyumlu olmadığını unutmayın. (yanlış) ihtiyacım olan şey. –

İlgili konular