如何在kendo网格中绑定非常大量的base64字符串?

时间:2016-03-24 02:57:44

标签: asp.net-mvc

我想加载大量的base64字符串,它绑定到kendo网格中的图像和音频控件。但是数据无法加载到网格中,我尝试超过24行,这没关系。对于超过30行,它可能不确定加载到网格中。我该如何解决这个问题?有人帮忙!!!我也压缩了base64字符串,它没有正常工作。我想压缩原始文件大小的双倍大小。文件类型的使用是jpeg,wav,pcm,3gpp和3gp。

这是我的模特,

    public byte[] MULTIMEDIANOTEDATA { get; set; }

    public string strMULTIMEDIANOTEDATA { get; set; }

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

这是我的控制器,

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

1 个答案:

答案 0 :(得分:0)

我发现我的解决方案如下:

在我看来:

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

在我的控制器中:

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

我使用了Skip和Take Linq功能,这对我来说很好。仅在控制器中使用了分页内部逻辑。您可以点击此链接http://docs.telerik.com/kendo-ui/third-party/tutorials/webforms/asp-net-hello-kendo-ui-part-1#handle-request-parameters

我希望这个解决方案能更好地解决您的kendo网格数据加载分页问题。祝你好运:)