5

我有jqgrid。我根据列值对几行进行了分组。工作演示可在 定义 jqGrid 的代码的链接部分获得

    var preclosingtable = $('#preclosing');
    preclosingtable.jqGrid({
        datatype: 'local',
        data: data.DOCS,
        colNames: ['', 'Documents Received', 'Comments', 'NA', 'DocGroup'],
        colModel: [
        { name: 'Documents', index: 'Documents', align: 'left', sortable: false, editable: false, width: 20 },
        { name: 'DocsReceived', index: 'DocsReceived', align: 'center', sortable: false, editable: true, edittype: 'checkbox', editoptions: { value: "True:False" }, formatter: "checkbox", width: 140 },
        { name: 'Comments', index: 'Comments', align: 'center', sortable: false, editable: true, edittype: "textarea", editoptions: { rows: "3", cols: "16" }, width: 180 },
        { name: 'NA', index: 'NA', editable: true, formatter: 'dynamicText', width: 150, edittype: 'custom', editoptions: { custom_element: radioelem, custom_value: radiovalue} },
            { name: 'DocGroup', index: 'DocGroup', editable: false, width: 1 }
        ],
        rowNum: data.DOCS.length,
        //rowList: [10, 20, 30],
        pager: '#preclosingpagerdiv',
        viewrecords: true,
        sortorder: "asc",
        sortname: 'Documents',
        grouping: true,
        groupingView: {
            groupField: ['DocGroup'],
            groupColumnShow: [false],
            groupDataSorted: true,
            groupOrder : 'asc'
        },
        localReader: {
            id: 'ConfigId'
        },
        shrinkToFit: false,
        height: 'auto',
        loadComplete: function () {
            HideGroupHeaders(this);
        },
        onSelectRow: function (id) {
            preclosingtable.jqGrid('saveRow', previouslyselectedRow, false, 'clientArray');
            previouslyselectedRow = SetJQGridRowEdit(id, previouslyselectedRow, preclosingtable);
        }
    });

以下是我的网格的样子 分组后的jqGrid

问题:是否可以对此网格中的行进行排序,以便最终网格具有以下顺序的行

  • 阿拉巴马州
  • D
  • 缅因州
  • 新泽西州
  • 弗吉尼亚
4

2 回答 2

11

如果我正确理解您的问题,您可以通过在您进行分组的列上添加自定义排序功能(参见此处此处此处)来解决您的问题:DocGroup

sorttype: function (cellvalue, rowObject) {
    return cellvalue? cellvalue : rowObject.Documents;
}

结果,具有空的输入数据DocGroup将被排序并按 分组Documents您将在Fiddle上看到结果

在此处输入图像描述

于 2013-04-25T17:56:20.627 回答
1

我想到了两件事,您可以在网格中创建另一行进行排序。不将任何数据放入服务器端的该列,然后在 jqGrid 上的 beforeProcessing 函数中将数据添加到该列。

在 beforeProcessing 函数中,您可以测试分组数据并使用第一个字符填充此列,然后如果值为空白(对于上面的 D、Q 示例),您将使用这些值。

这是 beforeProcessing 函数,您可以将其用作填充此列的基础,然后对其进行排序:

        beforeProcessing: function (data, status, xhr) {
            for (var x = 0, length = data.rows.length; x < length; x++) {
                var valueToPutInSortColumn = ....
                data.rows[x].cell.splice(sortColumnIndex, 0, valueToPutInSortColumn );
            }
        ....
于 2013-04-25T17:36:16.887 回答