我想加载大量的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;
}
答案 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网格数据加载分页问题。祝你好运:)