Tornar a seleção multisselectada do jqGrid persistente após paginação, pesquisa de barra de ferramentas ou filtro

eu tenho istojqGrid. O seguinte é o meu comportamento desejado:

O item selecionado terá a seleção persistente (e será renderizada como tal ao usuário) após a troca de páginas ou a busca (barra de ferramentas ou filtro)

Quando o botão Selecionar tudo estiver selecionado, se nenhum item da página atual for selecionado, ele selecionará todos eles. Se houver um item já selecionado, ele limpará toda a lista, seja na página ou não.

Quando o botão Imprimir fatura for clicado, ele usará a lista de IDs criados à medida que formos criados ou criará uma lista de todos os IDS que foram selecionados, seja na exibição atual ou não.

Seria aceitável se o filtro não fosse suportado, mas preferível.

Para ter certeza, eu sei pouco sobre js, mas aqui estão algumas coisas que tentei com sucesso:

esteresponda sugere usar o onSelectRow e onSelectAll, mas não consegui implementar.ver falha

este parece promissor, mas só vai consertar a coisa de paginação. Portanto, o nº 1 parece um caminho preferido.pastebin para a questão # 2

P.S. de volta para o saber pouco sobre js. no meu projeto a funcionalidade de alerta e não mostrada da função select_ids funciona, não tenho certeza porque ela não está exibindo o alerta no jsfiddle. tão desculpe antecipadamente que precisa de reparo, aponta brownie para no entanto coloca a correção 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"});

questionAnswers(1)

yourAnswerToTheQuestion