如何在jqgrid分组中单独按汇总值对列进行排序

时间:2017-04-06 01:55:48

标签: javascript jqgrid

我在这里提供了代码:https://jsfiddle.net/zqLp4yrg/41/

数据类型是“本地”而不是json。

$("#jqGrid").jqGrid({
    url: "/echo/json/", // use JSFiddle echo service
    postData: {
        json: JSON.stringify(serverResponse) // needed for JSFiddle echo service
    },
    mtype: "POST", // needed for JSFiddle echo service
    datatype: "json",
    colModel: [
        { label: 'CatId', name: 'CatId', key: true, width: 30 },
        { label: 'InventoryDate', name: 'InventoryDate', width: 70 },
        { label: 'ProductName', name: 'ProductName', width: 150 },
        { label: 'RemainingQuantity', name: 'RemainingQuantity', width: 150, summaryType: 'sum', sortable: true }

    ],
    iconSet: "fontAwesome",
    viewrecords: true,
    rowList: [20,30,50],
    width: 780,
    height: 250,
    rowNum: 20,
    sortname: "ProductName",
    grouping: true,
    groupingView: {
        groupField: ["CatId"],
        groupColumnShow: [true],
        groupText: [
            "CatId: <b>{0}</b>"
        ],
        groupOrder: ["asc"],
        groupSummary: [true],
        groupSummaryPos: ["header"],
        groupCollapse: true
    }
});

在这里,我想根据标题中的汇总值对剩余数量进行排序。请帮忙。

1 个答案:

答案 0 :(得分:1)

您的演示有许多小问题:

  • 首先,您写的数据类型的用法是“本地”,但您在演示中使用datatype: "json"。此外,您不使用loadonce: true选项,也不使用forceClientSorting: true选项。这意味着服务器负责对数据进行排序。此外,如果您使用分组,则必须在groupingView.groupField(在您的情在你的情况下{1}}。您用作来源的数据未正确排序。例如,有人看到jqGrid显示两个 CatId和两个sortname组。
  • 您可以通过添加RemainingQuantityCatId: 2选项来解决问题,但是您使用旧版本的免费jqGrid(4.11.1),这不支持CatId: 3。您必须升级到免费的jqGrid的最新版本(4.14.0)才能在显示之前对客户端上的服务器返回的数据进行排序和分组。
  • 包含整数数据的源数据将作为字符串从服务器返回。此外,某些数据项包含空格(loadonce: true而不是forceClientSorting: trueforceClientSorting: true)。它改变了对数据进行排序的顺序。
  • 您应该使用" 16"(例如"16")对列中与数据类型相对应的数据进行排序。
  • 要正确排序日期列,您应同时使用16sorttype sorttype: "integer"(在您的情况下为sorttype: "date"
  • 如果您希望选项formatter: "date"formatoptionsformatoptions: { srcformat: "d/m/Y H:i:s", newformat: "d/m/Y H:i:s" }有效,则网格必须至少有一个寻呼机。因此,您可能会跳过rowNumrowList(或两者)选项。

固定演示为https://jsfiddle.net/OlegKi/zqLp4yrg/43/。我删除了viewrecordspager: true只是为了便于检查结果。这些设置对您的主要问题并不重要。