Dokonaj wyboru wielokrotnego wyboru jqGrid po ponownym paginowaniu, przeszukiwaniu paska narzędzi lub filtrowaniu

Mam tojqGrid. Oto moje pożądane zachowanie:

Wybrany element będzie miał zaznaczony wybór (i będzie wyświetlany jako taki dla użytkownika) po zmianie stron lub wykonaniu wyszukiwania (pasek narzędzi lub filtr)

Po wybraniu przycisku Zaznacz wszystko, jeśli nie wybrano żadnych elementów na bieżącej stronie, wybiera je wszystkie. Jeśli jest już wybrany element, wyczyści całą listę, czy to na stronie, czy nie.

Po kliknięciu przycisku Wydrukuj fakturę, albo użyje listy identyfikatorów, która została utworzona podczas naszej podróży, albo stworzy listę wszystkich wybranych IDS, czy to na bieżącym ekranie, czy nie.

Dopuszczalne byłoby, gdyby filtr nie był obsługiwany, ale preferowany.

Z pewnością niewiele wiem o js, ​​ale oto kilka rzeczy, które wypróbowałem z mieszanym powodzeniem:

Toodpowiedź sugeruje użycie onSelectRow i onSelectAll, ale nie mogłem wdrożyć.zobacz porażkę

To wygląda obiecująco, ale naprawi tylko numerację stron. Więc # 1 wygląda jak preferowana trasa.pastebin na pytanie # 2

P.S. powrót do wiedzy o js. w moim projekcie działa funkcja alert_id i nie pokazana funkcja select_ids nie działa, nie wiem, dlaczego nie wyświetla alertu w jsfiddle. przepraszam z góry, że wymaga naprawy, brownie wskazuje jednak, że umieszcza rozwidloną poprawkę.

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