2016-03-24 2 views
1

Ich möchte eine große Menge von Base64-String laden, die in Bild und Audio-Steuerelement in Kendo-Gitter gebunden wurde. Aber die Daten können nicht im Raster geladen werden, ich versuche über 24 Zeilen, das ist ok. Bei mehr als 30 Zeilen ist es möglicherweise nicht sicher, ob das Raster geladen wird. Wie löste ich dieses Problem? Jeder Hilfe !!! Ich komprimiere auch diese Base64-String, es funktioniert nicht richtig. Ich möchte doppelte Größe der ursprünglichen Dateigröße komprimieren. Die Dateitypen sind jpeg, wav, pcm, 3gpp und 3gp.Wie bind ich sehr große Menge an Base64-String in Kendo-Gitter?

Hier ist mein Modell,

public byte[] MULTIMEDIANOTEDATA { get; set; } 

    public string strMULTIMEDIANOTEDATA { get; set; } 

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

Hier mein Controller,

ist
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

Ist es eine Ausnahme oder ist es einfach nichts zu tun? Wenn Sie die Seitengröße auf Ihrem Kendogrid verringern, funktioniert es dann? – counterflux

+0

Ich verringere die Seitengröße auf meinem Kendogrid, es funktioniert noch nicht. :(Counterflux –

+0

die JSON-Daten, die Sie senden, ist nicht über 100k, richtig? Wenn nicht dann könnte es in Ihrem binden die Jsondata an Ihr Gitter? Können Sie den Grid-Code vielleicht zeigen? – counterflux

Antwort

0

ich meine Lösung gefunden, wie folgt:

Aus meiner Sicht:

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

In meinem Controller:

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

Ich habe Skip und Take Linq Funktionen dafür, es ist gute Arbeit für mich. Nur verwendete Paginierung interne Logik in Controller. Sie können diesem Link folgen http://docs.telerik.com/kendo-ui/third-party/tutorials/webforms/asp-net-hello-kendo-ui-part-1#handle-request-parameters

Ich hoffe, diese Lösung wäre besser für die Lösung Ihrer Kendo-Grid-Daten laden Paging-Problem. Viel Glück :)

Verwandte Themen