Haga que la selección multiselección de jqGrid persista después de la paginación, la búsqueda de la barra de herramientas o el filtro

tengo estojqGrid. El siguiente es mi comportamiento deseado:

El elemento seleccionado tendrá la selección persistir (y se representará como tal para el usuario) después de cambiar las páginas o hacer una búsqueda (barra de herramientas o filtro)

Cuando se selecciona el botón Seleccionar todo, si no se seleccionan elementos en la página actual, los selecciona todos. Si ya hay un elemento seleccionado, se borrará toda la lista, ya sea en la página o no.

Cuando se hace clic en el botón Imprimir factura, se utilizará la lista de ID que se creó a medida que avanzamos, o se creará una lista de todos los IDS seleccionados, ya sea en la pantalla actual o no.

Sería aceptable si el filtro no fuera compatible, pero se prefiriera.

Para estar seguro, sé poco acerca de js, pero aquí hay algunas cosas que he intentado con éxito mixto:

Estaresponder sugiere usar onSelectRow y onSelectAll, pero no pude implementar.ver fallar

Esta Parece prometedor, pero solo arreglará lo de la paginación. Así que # 1 parece una ruta preferida.pastebin para la pregunta # 2

PD De vuelta al saber poco sobre js. en mi proyecto, la alerta y la funcionalidad no mostrada de la función select_ids funcionan, no estoy seguro de por qué no muestra la alerta en el archivo jsfiddle. tanto lo siento de antemano que necesita reparación, Brownie señala, sin embargo, los mensajes de la corrección bifurcada.

grid.jqGrid({
            datatype: "local",
            data: mydata,
            colNames:['Inv No','Date', 'Client', 'Amount','Tax','Total','Notes'],
            colModel:[
                {name:'id',index:'id', key: true, width:70, sorttype:"int"},
                {name:'invdate',index:'invdate', width:90, sorttype:"date"},
                {name:'name',index:'name', width:100},
                {name:'amount',index:'amount', width:80, align:"right",sorttype:"float"},
                {name:'tax',index:'tax', width:80, align:"right",sorttype:"float"},
                {name:'total',index:'total', width:80,align:"right",sorttype:"float"},
                {name:'note',index:'note', width:150, sortable:false}
            ],
            search:true,
            pager:'#pager',
            jsonReader: {cell:""},
            rowNum: 10,
            rowList: [5, 10, 20, 50],
            sortname: 'id',
            sortorder: 'asc',
            viewrecords: true,
            multiSort: true, 
            multiselect: true, 

            height: "100%",
            caption: "Invoice Print"
        });
        grid.jqGrid('navGrid','#pager',{add:false,edit:false,del:false,search:true,refresh:true},
                    {},{},{},{multipleSearch:true, multipleGroup:true, showQuery: true});
        grid.jqGrid('filterToolbar',{stringResult: true,searchOnEnter : false, defaultSearch:"cn"});

Respuestas a la pregunta(1)

Su respuesta a la pregunta