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
  • メイン州
  • ニュージャージー
  • Q
  • バージニア州
4

2 に答える 2

11

私があなたの問題を正しく理解していれば、グループ化を行う列にカスタムソート機能 (ここここここを参照) を追加することで問題を解決できます。DocGroup

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

その結果、空の入力データDocGroupがソートされ、 によってグループ化されDocumentsます。Fiddleで結果が表示されます

ここに画像の説明を入力

于 2013-04-25T17:56:20.627 に答える
1

2 つのことが頭に浮かびます。別の行を作成して、グリッドで並べ替えることができます。サーバー側でその列にデータを配置せず、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 に答える