在发生列排序时,我遇到了JQGrid丢失记录的问题。例如,如果有400条记录,则排序发生时,记录计数将降至20。
$("#grdCaseFind").jqGrid({
datatype: "local",
height: 250,
colNames:['SeqNo', 'Report Title', 'Location', 'Status', 'Date', 'Officer Name', 'Incident No.'],
colModel:[
{name:'SeqNo',index:'SeqNo', hidden:true},
{name:'RepTitle',index:'RepTitle', align:"center", width:200},
{name:'CaseAddr',index:'CaseAddr', align:"center", width:200},
{name:'RepStatus',index:'RepStatus', align:"center", width:50},
{name:'CaseBeginDate',index:'CaseBeginDate', width:70, align:"center"},
{name:'RepOfficerName',index:'RepOfficerName', width:100, align:"center"},
{name:'IncidentNo',index:'IncidentNo', width:80, align:"center"},
],
multiselect: false,
caption: "",
onSelectRow: function (rowid, status) {
if (status === false) {
$(this).resetSelection();
$("#btnOpen").attr("disabled", true);
} else {
$("#btnOpen").attr("disabled", false);
$("#CaseSelectedIndex").val($("#grdCaseFind").getCell(rowid, "SeqNo"))
}
},
ondblClickRow: function (rowid, iRow, iCol, e) {
document.getElementById("btnOpen").click();
},
onSortCol: function (index, iCol, sortoder) {
$("#btnOpen").attr("disabled", true);
}
});
数据是从存储在表单本身的JSON数组中填充的。
grdCaseFindData = strFindResult.grdCaseFind;
$(grdCaseFindData).each(function (i, e) {
$("#grdCaseFind").addRowData(i + 1, e);
$("#grdCaseFind").attr("rowNum", i + 1);
});
之前我遇到过这个问题,通过计算记录和设置“rowNum”属性,问题得到了纠正。在我的其他网格中,唯一的区别是我通过调用服务器来加载记录,服务器返回一个JSON数组。关于为什么这个网格不像其他网格那样的任何想法?
答案 0 :(得分:4)
忽视这个问题。显然,在初始化网格后动态设置rowNum属性存在问题。我发现的唯一工作是
rowNum: -1
仅适用于早期版本的JQGrid或
rowNum: 9007199254740992
这是maxInt大小,是一个不太可能达到的天文数字。
如果有人知道更优雅和最新的解决方案,请更正我的答案。