Javascript 如何在jqgrid分组中仅按其摘要值对列进行排序
我在这里有可用的代码: 数据类型是“本地”而不是jsonJavascript 如何在jqgrid分组中仅按其摘要值对列进行排序,javascript,jqgrid,Javascript,Jqgrid,我在这里有可用的代码: 数据类型是“本地”而不是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
$("#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
}
});
$(“#jqGrid”).jqGrid({
url:“/echo/json/”,//使用JSFIDLE echo服务
postData:{
json:json.stringify(serverResponse)//JSFIDLE echo服务需要
},
mtype:“POST”//JSFIDLE echo服务需要
数据类型:“json”,
colModel:[
{label:'CatId',name:'CatId',key:true,width:30},
{标签:'InventoryDate',名称:'InventoryDate',宽度:70},
{标签:'ProductName',名称:'ProductName',宽度:150},
{label:'RemainingQuantity',name:'RemainingQuantity',宽度:150,summaryType:'sum',sortable:true}
],
iconSet:“真棒”,
viewrecords:是的,
行列表:[20,30,50],
宽度:780,
身高:250,
rowNum:20,
sortname:“产品名称”,
分组:对,
分组视图:{
groupField:[“CatId”],
groupColumnShow:[正确],
组文本:[
“CatId:{0}”
],
groupOrder:[“asc”],
groupSummary:[true],
groupSummaryPos:[“标题”],
群体崩溃:真的吗
}
});
在这里,我想根据标题中的汇总值对剩余数量进行排序。请帮助。您的演示有许多小问题:
- 首先,您写的关于数据类型的用法是“local”,但在演示中使用的是
。此外,还可以使用nodatatype:“json”
选项和noloadonce:true
选项。这意味着服务器负责对数据进行排序。此外,如果使用分组,则从服务器返回的数据必须(在服务器上)按forceClientSorting:true
(groupingView.groupField
)和CatId
(sortname
)进行排序。用作源的数据排序不正确。例如,我们可以看到jqGrid显示两个RemainingQuantity
和两个CatId:2
组CatId:3
- 您可以通过添加
和loadonce:true
选项来解决此问题,但您使用的是旧版本的免费jqGrid(4.11.1),它不支持forceClientSorting:true
。您必须升级到免费jqGrid的最新版本(4.14.0),才能在显示之前对从客户端服务器返回的数据进行排序和分组forceClientSorting:true
- 包含整数数据的源数据将作为字符串从服务器返回。此外,某些数据项包含空格(
,而不是“16”
或“16”
)。它改变了数据排序的顺序16
- 您应该使用
(例如sorttype
)对数据类型对应的列中的数据进行排序sorttype:“integer”
- 要正确排序日期列,应使用
和sorttype:“date”
以及formatter:“date”
(在您的情况下:formattoptions
)formattoptions:{srcformat:“d/m/Y H:i:s”,newformat:“d/m/Y H:i:s”}
- 如果希望选项
、rowNum
和rowList
工作,则网格必须至少有一个寻呼机。因此,您可能会跳过viewrecords
或pager:true
(或两者)选项toppager:true
固定演示是。我删除了
groupingView.groupollapse:true
和height:250
只是为了便于检查结果。设置对于您的主要问题并不重要。您好,为了演示,我不得不使用它。我使用的数据类型是:local。现在更新了小提琴。我希望列排序基于摘要,而不是组中的行。通过列排序,我的意思是当您单击列标题时,记录应根据分组摘要进行排序。请帮助。@MattMurdock:我重复一遍,我不明白你在“我希望列排序基于摘要而不是组中的行”下的意思。如何“列标题记录应根据分组摘要进行排序”?列标题和分组标题只是标题,与数据没有直接关系。您可以自定义列标题和分组标题以显示该位置的任何信息。jqGrid对组和行进行排序。这些组可以按照groupField:[“CatId”]
和单击列中的数据作为第二个排序标准进行排序。@MattMurdock:是的,原因是。我在上一篇评论中写道,最简单的方法是计算摘要值,您需要独立于jqGrid访问该值,并使用该值(作为附加属性)扩展数据。然后,rowObject
将具有您需要的属性。@MattMurdock:这是网格的DOM<代码>var p=$(this).jqGrid(“getGridParam”)代码>是网格选项的参考。因此,您可以检查p.sortorder
,p.sortname
或jqGrid的任何其他选项。@MattMurdock:对不起,我必须完成我的主要工作,不能以“聊天”方式回答评论。从其他问题转向年轻人总是需要一些时间。我不确定我是否正确理解你最后的评论。在reloadGrid
和更改sortname
时应小心。在什么时候或在哪个回调中更改sortname
,这一点非常重要。sortname
的值应为列名,因此不包含空格、逗号等。如果您有新问题,请单独发布,并准确描述您的问题所在。演示也很有帮助。