JQGrid丢失列排序记录

时间:2012-02-10 18:39:41

标签: javascript jquery json jqgrid

在发生列排序时,我遇到了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数组。关于为什么这个网格不像其他网格那样的任何想法?

1 个答案:

答案 0 :(得分:4)

忽视这个问题。显然,在初始化网格后动态设置rowNum属性存在问题。我发现的唯一工作是

rowNum: -1

仅适用于早期版本的JQGrid或

rowNum: 9007199254740992

这是maxInt大小,是一个不太可能达到的天文数字。

如果有人知道更优雅和最新的解决方案,请更正我的答案。