怎样的base64字符串非常大量绑定剑道格? [英] How do I bind very huge amount of base64 string in kendo grid?

查看:96
本文介绍了怎样的base64字符串非常大量绑定剑道格?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要加载被装订成图像和剑道电网音响控制的base64字符串的巨量。但数据可以在电网无法加载,我尝试了超过24行,没关系。在过去的30行,它可能不是一定要在电网负荷。我该如何解决这个问题?任何帮助!我也COM preSS的字符串的base64,it'not正常工作。我想COM preSS原始文件大小的两倍大小。使用的文件类型为JPG,WAV,PCM,3GPP和3GP。

下面是我的模型,

 字节公众[] {MULTIMEDIANOTEDATA获得;组; }    公共字符串strMULTIMEDIANOTEDATA {搞定;组; }    公共字符串MULTIMEDIANOTEDATA64
    {
        得到
        {
            返回MULTIMEDIANOTEDATA!= NULL? Convert.ToBase64String(MULTIMEDIANOTEDATA):空;
        }
    }

下面是我的控制器,

 公众的ActionResult GetNoteItems([DataSourceRequest] DataSourceRequest要求)
    {
        //获取模型
        清单< NotesModel>注=新的List< NotesModel>();        清单< NotesModel> lstNotes =(新CitationFactory(Session[Constants.Security.AIConnectionStringSessionVariableName].ToString())).GetNotes();        的foreach(在lstNotes VAR项)
        {
            Notes.Add(新NotesModel
            {
                NOTEDATE = item.NOTEDATE,
                NOTESMEMO = item.NOTESMEMO,
                MULTIMEDIANOTEDATATYPE = item.MULTIMEDIANOTEDATATYPE.ToString()。替换(\\,),
                MULTIMEDIANOTEFILENAME = item.MULTIMEDIANOTEFILENAME,
                MULTIMEDIANOTEDATA = item.MULTIMEDIANOTEDATA,
            });
        }        INT总= 0;
        如果(Notes.Any())
            总= Notes.Count();        VAR的结果=新DataSourceResult
        {
            数据=注,
            总=总
        };
        VAR jsonResult = JSON(结果,JsonRequestBehavior.AllowGet);
        jsonResult.MaxJsonLength = int.MaxValue;
        返回jsonResult;
    }


解决方案

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

在我看来:

  @(Html.Kendo()网格和LT。NotesModel>()
    .DataSource(数据源=> dataSource.Ajax()读(读=方式>。read.Action(GetNoteItems,引文))ServerOperation(真).PageSize(20)
    ))

在我的控制器:

  INT当前页= request.Page;
        INT的pageSize = request.PageSize;        如果(当前是== 1)
        {
            partialNote = Notes.Take(pageSize的).T​​oList();
        }
        其他
        {
            partialNote = Notes.Skip(当前页* pageSize的 - 20)。取(pageSize的).T​​oList();
        }

我以前跳过和采取的LINQ功能的,这对我来说做工精细。在controller.You仅用于分页内部逻辑可以遵循此链接<一个href=\"http://docs.telerik.com/kendo-ui/third-party/tutorials/webforms/asp-net-hello-kendo-ui-part-1#handle-request-parameters\" rel=\"nofollow\">http://docs.telerik.com/kendo-ui/third-party/tutorials/webforms/asp-net-hello-kendo-ui-part-1#handle-request-parameters

我希望这个解决方案将是解决您剑道电网数据加载分页问题更好。好运:)

I want to load huge amount of base64 string that was bind into image and audio control in kendo grid. But the data cannot load in grid, i try for over 24 rows , that's ok. For over 30 rows , it might not sure to load in grid. How do I solved this problem? Anyone Help !!! I also compress that base64 string , it'not work properly. I want to compress double size of original file size. The use of file types are jpeg, wav, pcm, 3gpp, and 3gp.

Here is my model,

    public byte[] MULTIMEDIANOTEDATA { get; set; }

    public string strMULTIMEDIANOTEDATA { get; set; }

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

Here is my controller,

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

解决方案

I found my solution as follows:

In my view:

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

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

I used Skip and Take Linq functions for that, it's fine work for me. Only used pagination internal logic in controller.You can follow this link http://docs.telerik.com/kendo-ui/third-party/tutorials/webforms/asp-net-hello-kendo-ui-part-1#handle-request-parameters

I hope this solution would be better for solving your kendo grid data load paging problem. Good Luck :)

这篇关于怎样的base64字符串非常大量绑定剑道格?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆