Get all row IDs in jqGrid

后端 未结 4 517
攒了一身酷
攒了一身酷 2021-01-05 05:47

How can one get the ID\'s of every row in a grid, even across pages?

getDataIDs and getRowData only gives the ID\'s of the current page.

4条回答
  •  南笙
    南笙 (楼主)
    2021-01-05 06:29

    Considering that Object.keys is supported since IE9, if you only need the IDs, nowadays I would use:

    var idToDataIndex = $("#list").jqGrid('getGridParam','_index');
    var ids = Object.keys(idToDataIndex);
    

    $(function () {
        "use strict";
        $("#list").jqGrid({
            colModel: [
                { name: "name", label: "Client", width: 53 },
                { name: "invdate", label: "Date", width: 90, align: "center", sorttype: "date",
                    formatter: "date", formatoptions: { newformat: "d-M-Y" },
                    searchoptions: { sopt: ["eq"] } },
                { name: "amount", label: "Amount", width: 65, template: "number" },
                { name: "tax", label: "Tax", width: 41, template: "number" },
                { name: "total", label: "Total", width: 51, template: "number" },
                { name: "closed", label: "Closed", width: 59, template: "booleanCheckbox", firstsortorder: "desc" },
                { name: "ship_via", label: "Shipped via", width: 87, align: "center",
                    formatter: "select",
                    formatoptions: { value: "FE:FedEx;TN:TNT;DH:DHL", defaultValue: "DH" },
                    stype: "select",
                    searchoptions: { value: ":Any;FE:FedEx;TN:TNT;DH:DHL" } }
            ],
            data: [
                { id: "10",  invdate: "2015-10-01", name: "test",   amount: "" },
                { id: "20",  invdate: "2015-09-01", name: "test2",  amount: "300.00", tax: "20.00", closed: false, ship_via: "DH", total: "320.00" },
                { id: "30",  invdate: "2015-09-01", name: "test3",  amount: "400.00", tax: "30.00", closed: false, ship_via: "FE", total: "430.00" },
                { id: "40",  invdate: "2015-10-04", name: "test4",  amount: "200.00", tax: "10.00", closed: true,  ship_via: "TN", total: "210.00" },
                { id: "50",  invdate: "2015-10-31", name: "test5",  amount: "300.00", tax: "20.00", closed: false, ship_via: "FE", total: "320.00" },
                { id: "60",  invdate: "2015-09-06", name: "test6",  amount: "400.00", tax: "30.00", closed: false, ship_via: "FE", total: "430.00" },
                { id: "70",  invdate: "2015-10-04", name: "test7",  amount: "200.00", tax: "10.00", closed: true,  ship_via: "TN", total: "210.00" },
                { id: "80",  invdate: "2015-10-03", name: "test8",  amount: "300.00", tax: "20.00", closed: false, ship_via: "FE", total: "320.00" },
                { id: "90",  invdate: "2015-09-01", name: "test9",  amount: "400.00", tax: "30.00", closed: false, ship_via: "TN", total: "430.00" },
                { id: "100", invdate: "2015-09-08", name: "test10", amount: "500.00", tax: "30.00", closed: true,  ship_via: "TN", total: "530.00" },
                { id: "110", invdate: "2015-09-08", name: "test11", amount: "500.00", tax: "30.00", closed: false, ship_via: "FE", total: "530.00" },
                { id: "120", invdate: "2015-09-10", name: "test12", amount: "500.00", tax: "30.00", closed: false, ship_via: "FE", total: "530.00" }
            ],
            iconSet: "fontAwesome",
            idPrefix: "",
            rownumbers: true,
            sortname: "invdate",
            sortorder: "desc",
            threeStateSort: true,
            sortIconsBeforeText: true,
            headertitles: true,
            toppager: true,
            pager: true,
            rowNum: 5,
            viewrecords: true,
            searching: {
                defaultSearch: "cn"
            },
            caption: "The grid, which demonstrates formatters, templates and the pager"
        }).jqGrid("filterToolbar");
    });
    
    $('#btnGetAllIDs').click(function() {
        var idToDataIndex = $("#list").jqGrid('getGridParam','_index');
        var ids = Object.keys(idToDataIndex);
        console.log(ids);
    });
    
    
    
    
    
    
    
    

    But please also read and upvote Oleg's answer because it has the conditions in which it's possible to do this and the important information.

    Warning for jqgrid version < 4.7:

    If you are dynamically removing rows from the grid (delRowData), the _index will still have the deleted rows. You may fix that by fixing "refreshIndex" in jqgrid.base.js (as they did in 4.7).

提交回复
热议问题