2016-03-24 20 views
1

Kendo ızgarasında görüntü ve ses kontrolüne bağlanan büyük miktarda base64 dizgisi yüklemek istiyorum. Ama veriler ızgaraya yüklenemiyor, 24 sıradan fazla deniyorum, sorun değil. 30'dan fazla satır için, kılavuza yüklendiğinden emin olmayabilir. Bu sorunu nasıl çözebilirim? Herkes yardım etsin! Ben de bu base64 dizesini sıkıştırıyorum, düzgün çalışmıyor. Orijinal dosya boyutunun çift boyutunu sıkıştırmak istiyorum. Dosya türlerinin kullanımı jpeg, wav, pcm, 3gpp ve 3gp'dir. BenceKendo ızgarasında çok büyük miktarda base64 dizgisini nasıl bağlarım?

:

@(Html.Kendo().Grid<NotesModel>()   
    .DataSource(dataSource => dataSource.Ajax().Read(read => read.Action("GetNoteItems", "Citation")).ServerOperation(true).PageSize(20) 
    )) 

şöyle benim çözüm buldu

public ActionResult GetNoteItems([DataSourceRequest] DataSourceRequest  request) 
    { 
     //get models    
     List<NotesModel> Notes = new List<NotesModel>(); 

     List<NotesModel> lstNotes = (new CitationFactory(Session[Constants.Security.AIConnectionStringSessionVariableName].ToString())).GetNotes(); 

     foreach (var item in lstNotes) 
     { 
      Notes.Add(new NotesModel 
      { 
       NOTEDATE = item.NOTEDATE, 
       NOTESMEMO = item.NOTESMEMO, 
       MULTIMEDIANOTEDATATYPE = item.MULTIMEDIANOTEDATATYPE.ToString().Replace("\"", ""), 
       MULTIMEDIANOTEFILENAME = item.MULTIMEDIANOTEFILENAME, 
       MULTIMEDIANOTEDATA = item.MULTIMEDIANOTEDATA,     
      }); 
     } 

     int total = 0; 
     if (Notes.Any()) 
      total = Notes.Count(); 

     var result = new DataSourceResult 
     { 
      Data = Notes, 
      Total = total 
     }; 
     var jsonResult = Json(result, JsonRequestBehavior.AllowGet); 
     jsonResult.MaxJsonLength = int.MaxValue;   
     return jsonResult; 
    } 
+0

Bir şey atıyor mu, yoksa hiçbir şey yapmıyor mu? Kendogrid'inizin sayfa boyutunu küçültürseniz, o zaman çalışıyor mu? – counterflux

+0

Kendogrid'imde sayfa boyutunu küçültüyorum, henüz çalışmıyor. :(counterflux –

+0

göndermekte olduğunuz json verileri 100k'dan fazla değil, değil mi? Eğer o zaman sizin Jsondata'nın ızgarasına bağlanıyor olabilirseniz, belki de grid kodunu gösterebilir misiniz? – counterflux

cevap

0

İşte

public byte[] MULTIMEDIANOTEDATA { get; set; } 

    public string strMULTIMEDIANOTEDATA { get; set; } 

    public string MULTIMEDIANOTEDATA64 
    { 
     get 
     { 
      return MULTIMEDIANOTEDATA != null ? Convert.ToBase64String(MULTIMEDIANOTEDATA) : null; 
     } 
    } 

benim denetleyicisi İşte

benim modeldir

, Kontrol cihazımda:

 int currentPage = request.Page; 
     int pageSize = request.PageSize; 

     if (currentPage == 1) 
     { 
      partialNote = Notes.Take(pageSize).ToList(); 
     } 
     else 
     { 
      partialNote = Notes.Skip(currentPage * pageSize - 20).Take(pageSize).ToList(); 
     } 

Bunun için Skip and Take Linq işlevlerini kullandım, bu benim için iyi bir çalışma. Kontrolördeki sadece kullanılan sayfalama iç mantığı. Bu bağlantıyı takip edebilirsiniz http://docs.telerik.com/kendo-ui/third-party/tutorials/webforms/asp-net-hello-kendo-ui-part-1#handle-request-parameters

Umarız bu çözüm kendo grid veri yükü sorununu çözmenizde daha iyi olacaktır. İyi şanslar :)

İlgili konular