当我已经使用了idPrefix时,行是重复的

时间:2015-11-18 14:33:21

标签: jquery jqgrid

在一个页面上,我有多个网格,其中一些值在同一个数据库中相同/查询。虽然网格不断刷新,但我得到了重复的行。这是为什么?当我硬刷新页面时,重复的行会消失。

我用过:

idPrefix: $(gridObject).attr('id') + "_" 
// gridObject is a reference to a particular jqGrid

对于页面上的每个jqGrid,但行ID是重复的,如下所示:

enter image description here

界面外观的快照:

enter image description here

应该只有2个组标题dhoopafshan。这可能是什么原因?我正在使用jqGrid 4.6.0

1 个答案:

答案 0 :(得分:1)

我不想写太多批评你发布的代码。我只描述与您发布的问题有关的部分。

在我看来,服务器代码将不正确的数据返回给jqGrid。您从服务器加载数据(datatype不是"local")。这意味着服务器代码必须准备数据以进行分组。了解加载数据的两个基本内容非常重要:

  • 数据项必须具有唯一ID,您应该正确通知jqGrid项中的哪个值是id。
  • 必须正确排序从服务器返回的数据。

例如,您使用选项groupingView: {groupField: "column1", ...}sortname: "column2",然后必须在服务器上按column1, column2对数据进行排序。我的意思是第一个排序标准必须是分组字段(字段)(列column1),第二个排序标准必须是column2(来自sortname: "column2")。我想数据在后端上的排序不正确。您的问题描述:“我得到重复的行。为什么会这样?当我刷新页面时,重复的行会消失。”让我们假设这一点。

秒,你在评论的评论中写道,返回数据的每一项的格式都是{"JobID":"1","FileName":" ","StartIndex":"0","EndIndex":"0","SplitIndex":"0","Duration":"0","FileSize":"0","LogStatus":" ","Name":"afshaan"}。我可以猜测JobID属性的值对于每个项都是唯一的。在正确jsonReader

的情况下
jsonReader: {
    repeatitems: false,
    id: "JobID"
}

jsonReader通知jqGrid如何解析输入数据项。您使用以下jsonReader代替

jsonReader : {
    root: "rows",
    records: "records",
    viewrecords: true,
    repeatitems: true,
    cell: "",
    id: "0"
}

这似乎是错误的。

此外,您使用jqGrid的datatype参数定义为函数。我在stackoverflow上看到并使用datatype作为函数的所有代码示例都是错误的。这些示例来自为jqGrid(版本3.6或更早版本)的旧版本创建的一些旧演示。我强烈建议你改用datatype: "json"。在我看来,您只需添加选项ajaxGridOptions: { contentType: "application/json" }并使用正确的jsonReader。我猜它可能像

jsonReader: {
    root: "responseJSON.rows",
    page: "responseJSON.page",
    total: "responseJSON.total",
    records: "responseJSON.records",
    repeatitems: false,
    id: "JobID"
}