Asp.net mvc 5 如果数据计数超过10K,免费jQgrid将抛出SystemOutofMemoryException
最近,我开始在免费jQgrid中遇到一个与“SystemOutOfMemoryException”相关的问题。我使用的版本是4.15.4,带有MVC5和Sql Server DB查询,用于提供数据。我发现的原因是数据的增长。如果数据在10K左右,且Asp.net mvc 5 如果数据计数超过10K,免费jQgrid将抛出SystemOutofMemoryException,asp.net-mvc-5,free-jqgrid,Asp.net Mvc 5,Free Jqgrid,最近,我开始在免费jQgrid中遇到一个与“SystemOutOfMemoryException”相关的问题。我使用的版本是4.15.4,带有MVC5和Sql Server DB查询,用于提供数据。我发现的原因是数据的增长。如果数据在10K左右,且LoadOnce:true处于该点,则它可以正常工作。但当更多的数据到来时,它开始抛出这个问题。 我将一次性从数据库中获取所有数据,并将其加载到网格中 以下是一些控制器代码: public JsonResult GetDataWRTLa
LoadOnce:true
处于该点,则它可以正常工作。但当更多的数据到来时,它开始抛出这个问题。
我将一次性从数据库中获取所有数据,并将其加载到网格中
以下是一些控制器代码:
public JsonResult GetDataWRTLanguage(string searchKey)
{
FormBL formsbl = new FormBL();
List<Form_Check> lstPPVM = new List<Form_Check>();
filter f = new filter();
string returnedLangCode = "";
if (searchKey != "")
{
TempData["LanguageCode"] = searchKey;
}
if (Convert.ToString(TempData["LanguageCode"]) != "")
{
returnedLangCode = Convert.ToString(TempData["LanguageCode"]);
TempData.Keep("LanguageCode");
}
else{
returnedLangCode = searchKey;
}
lstPPVM = formsbl.getDataWithLanguage(returnedLangCode);
//var newList = JsonConvert.SerializeObject(lstPPVM);
int page = 1, rows = 1;
int pageIndex = Convert.ToInt32(page) - 1;
int pageSize = rows;
int totalRecords = lstPPVM.Count();
var totalPages = (int)Math.Ceiling((float)totalRecords / (float)rows);
var Results = lstPPVM.AsQueryable();
var jsonData = new
{
total = totalPages,
page = page,
records = totalRecords,
rows = Results
};
var jsonResult = Json(jsonData, JsonRequestBehavior.AllowGet);
jsonResult.MaxJsonLength = int.MaxValue;
return jsonResult;
}
公共JsonResult GetDataWRTLanguage(字符串搜索键)
{
FormBL formsbl=新FormBL();
List lstpvm=新列表();
过滤器f=新过滤器();
返回的字符串langcode=“”;
如果(搜索键!=“”)
{
TempData[“LanguageCode”]=搜索键;
}
if(Convert.ToString(TempData[“LanguageCode”])!=“”)
{
returnedLangCode=Convert.ToString(TempData[“LanguageCode]”);
TempData.Keep(“语言代码”);
}
否则{
returnedLangCode=搜索键;
}
lstpvm=formsbl.getDataWithLanguage(返回的LangCode);
//var newList=JsonConvert.SerializeObject(lstpvm);
int page=1,rows=1;
int pageIndex=Convert.ToInt32(第页)-1;
int pageSize=行;
int totalRecords=lstPPVM.Count();
var totalPages=(int)数学上限((float)totalRecords/(float)行);
var Results=lstpvm.AsQueryable();
var jsonData=new
{
总计=总页数,
第页,
记录=总记录,
行=结果
};
var jsonResult=Json(jsonData,JsonRequestBehavior.AllowGet);
jsonResult.MaxJsonLength=int.MaxValue;
返回jsonResult;
}
以下是jqgrid代码
$("#grid").jqGrid({
url: '/MView/GetDataWRTLanguage?searchKey=' + LanguageId + "",
mtype: "GET",
datatype: "json",
colNames: [*more than 15*]
colModel: [*body of all columns with search*]
loadComplete: function () {
if ($('#grid').getGridParam('records') === 0) {
oldGrid = $('#GridIdb2 tbody').html();
$(".jqgfirstrow").css("height", "1px");
}
else {
oldGrid = "";
}
this.p.lastSelected = lastSelected;
var obj = JSON.parse(sessionStorage.getItem('majorgridInfo'));
if (obj != undefined || obj != undefined || obj != null || obj != null) {
jQuery("#grid").setGridParam({ rowNum: obj.rowNum.toString() });
var grid = $("#grid");
jQuery("#grid").setGridParam({ rowNum: obj.rowNum }).trigger("reloadGrid");
$('.ui-pg-selbox').val(obj.rowNum);
}
},
onPaging: function (pgbtn) {
Selected_RowList = $('.ui-pg-selbox').val();
saveGridParameters();
},
forceClientSorting: true,
cmTemplate: { autoResizable: true },
width: '100%',
scrollbar: true,
autoResizing: { compact: true },
editurl: "/MajorsView/EditParticipantRecords/",
pager: jQuery('#pager'),
loadonce: true,
viewrecords: true,
gridview: true,
height: '480px',
//width: '100%',
//maxHeight: 980,
//pager: '#pager',
rowNum: 25, //// adjust height of Jqgrid
rowList: [25, 100, 200, 500, 1000,10000], ////adjust height of Jqgrid
ignoreCase: true,
autowidth: true,
shrinkToFit: false,
hidegrid: true, //To disable collapsing
iconSet: "fontAwesome",
caption: "<i class='fa fa-users'></i> Participant List",
multiSort: true,
sortname: 'ReferenceId',
sortOrder: 'asc',
rowattr: function (rd) {
if (rd.Check === "true") {
return { "class": "state_inactive" };
}
},
multiselect: false,
emptyrecords: "No records to display",
jsonReader:
{
root: "rows",
page: "page",
total: "total",
records: "records",
repeatitems: false,
Id: "ReferenceId"
},
inlineEditing: { keys: true, defaultFocusField: "ReferenceId", focusField: "ReferenceId" },
});
$(“#网格”).jqGrid({
url:“/MView/GetDataWRTLanguage?searchKey=”+LanguageId+“”,
mtype:“获取”,
数据类型:“json”,
colNames:[*超过15*]
colModel:[*所有列的正文,带搜索*]
loadComplete:函数(){
if($('#grid').getGridParam('records')==0){
oldGrid=$('#GridIdb2 tbody').html();
$(“.jqgfirstrow”).css(“高度”,“1px”);
}
否则{
oldGrid=“”;
}
this.p.lastSelected=lastSelected;
var obj=JSON.parse(sessionStorage.getItem('majorgridInfo');
如果(obj!=未定义的| | obj!=未定义的| | obj!=null | | obj!=null){
setGridParam({rowNum:obj.rowNum.toString()});
风险值网格=$(“#网格”);
jQuery(“#grid”).setGridParam({rowNum:obj.rowNum}).trigger(“reloadGrid”);
$('.ui pg selbox').val(obj.rowNum);
}
},
onPaging:函数(pgbtn){
选定的_RowList=$('.ui pg selbox').val();
saveGridParameters();
},
forceClientSorting:对,
cmTemplate:{自动调整大小:true},
宽度:“100%”,
滚动条:对,
自动调整大小:{compact:true},
editurl:“/MajorView/EditParticipantRecords/”,
pager:jQuery(“#pager”),
有一次:是的,
viewrecords:是的,
gridview:没错,
高度:'480px',
//宽度:“100%”,
//最大高度:980,
//寻呼机:“#寻呼机”,
rowNum:25,///调整Jqgrid的高度
行列表:[25100200500100010000],///调整Jqgrid的高度
ignoreCase:是的,
自动宽度:正确,
shrinkToFit:错,
hidegrid:true,//禁用折叠
iconSet:“真棒”,
标题:“参与者名单”,
多端口:对,
sortname:'ReferenceId',
排序器:“asc”,
rowattr:函数(rd){
如果(rd.Check==“true”){
返回{“类”:“state_inactive”};
}
},
多选:错,
emptyrecords:“没有要显示的记录”,
jsonReader:
{
根:“行”,
第页:“第页”,
总计:“总计”,
记录:“记录”,
重复项:false,
Id:“引用Id”
},
inlineEditing:{keys:true,defaultFocusField:“ReferenceId”,focusField:“ReferenceId”},
});
在这里,我还使用了JsonMaxLength属性,但它仍然抛出错误。
我已经看到它仍然可以正常工作,但对我来说,它在超过10K的数据上开始出现错误
附加问题:我应该使用服务器端jqgrid实现吗?如果是,那么如何修改到MVC和jqgrid的更新版本
任何帮助都将不胜感激 在jqGrid中有很多关于服务器端分页的帖子。你也可以在网上搜索。举个例子,您好,感谢Tony花时间提供您的意见。很高兴见到你。是的,我在网上搜索过同样的例子,最后得到了jqueryjqgrid或jquerygrid相关的例子。我认为这与免费jqgrid不匹配。虽然我读了Oleg关于免费jqgrid中服务器端分页的文章,但现在已经有点过时了。所以,我想在这里问一下。另一件事,我想知道为什么错误会抛出免费jQgrid。