jqgrid - 排序列中断组

时间:2015-12-31 17:28:01

标签: sorting jqgrid grouping break

我使用jqgrid 4.6.0

当我单击列标题对行进行排序时,初始分组会中断。 数据类型是JSON。

这是在colModel:

        {name:'name',width:150,resizable:true,title:false,sortable:true, editable:true},
        {name:'value',width:80,resizable:true,title:true,sorttype:'number'},
        {name:'col_type',width:80,resizable:false,title:false, editable:false}

分组设置和其他设置:

loadonce:true,toppager:true,hidegrid:false,
grouping:true,gridview:true,rownumbers:false,
groupingView: {
    groupField : ['col_type'],
    groupText: ['<b> {0} </b>'],
    groupColumnShow : [false]
}

显然,我希望对行进行排序。 另一个问题是,在colModel中将列设置为hidden: true是否有任何意义?因为它已在groupingView中定义。

1 个答案:

答案 0 :(得分:1)

我在评论中已经向您解释过,从服务器返回的数据必须按groupingView.groupField排序(在您的情况下为col_type字段)。另一方面,你有数据

var data = {"rows":[
        {"col_type":"group1",...},
        {"col_type":"group1",...},
        {"col_type":"aaa",...},
        {"col_type":"group3",...},
        {"col_type":"group3",...},
        {"col_type":"group4",...},
        {"col_type":"group4",...}
    ]};

其中"aaa"组的订单错误。 jqGrid可能会保留您的自定义订单,但您必须告知它。例如,您可以使用sorttype定义为函数或使用sortfunc回调函数。例如,您可以将输入数据扩展到以下

var data = {"rows":[
        {"col_type":"group1","col_type_order":1,...},
        {"col_type":"group1","col_type_order":1,...},
        {"col_type":"aaa","col_type_order":2,...},
        {"col_type":"group3","col_type_order":3,...},
        {"col_type":"group3","col_type_order":3,...},
        {"col_type":"group4","col_type_order":4,...},
        {"col_type":"group4","col_type_order":4,...}
    ]};

并使用col_type列作为

{
    name: 'col_type', width:80, resizable:false, title:false,
    sorttype: function (value, item) {
        return item.col_type_order;
    }
}

更新:查看经过修改的演示https://jsfiddle.net/uz7Ltbjk/7/。如果您使用旧的jqGrid,并且您将服务器中的数据与loadonce: true一起加载,那么您必须添加隐藏的列col_type_order。如果您使用免费的jqGrid,那么您可以使用additionalProperties。您可以使用的最简单的形式如下:

additionalProperties: ["col_type_order"]

它通知jqGrid从源数据中读取其他属性(字段),并将信息放在保存在data参数中的本地数据中。您可以使用任何附加信息扩展本地项目,稍后您可以在排序期间使用这些信息。顺便说一下,可以有任何类型的附加属性值。例如,它可以是对象或数组。这样的功能可能有助于主/细节网格或子网格。可以一次加载所有必需的信息,然后使用它。