Сделать выбор множественного выбора jqGrid постоянным после разбивки на страницы, поиска на панели инструментов или фильтра

у меня есть этоjqGrid, Вот мое желаемое поведение:

Выбранный элемент будет иметь постоянный выбор (и будет отображаться как таковой для пользователя) после изменения страниц или выполнения поиска (панель инструментов или фильтр)

Когда выбрана кнопка «Выбрать все», если на текущей странице не выбрано ни одного элемента, она выбирает их все. Если элемент уже выбран, он очистит весь список, будь то на странице или нет.

При нажатии кнопки «Печать счета-фактуры» он будет использовать список идентификаторов, который был создан на ходу, или создаст список всех идентификаторов, которые были выбраны, независимо от того, на текущем экране или нет.

Было бы приемлемо, если бы фильтр не поддерживался, но предпочтительнее.

Конечно, я мало знаю о js, но вот некоторые вещи, которые я пробовал с переменным успехом:

Этотответ предлагает использовать onSelectRow и onSelectAll, но я не смог реализовать.вижу неудачу

Этот выглядит многообещающе, но только исправит вещь нумерации страниц. Так что # 1 выглядит как предпочтительный маршрут.пастбина для вопроса № 2

Постскриптум вернуться к знанию немного о JS. в моем проекте работает функция оповещения и не показана функция select_ids, не знаю, почему она не отображает оповещение в jsfiddle. извините заранее, что он нуждается в ремонте, Брауни указывает на сообщения о разветвленном исправлении.

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"});

Ответы на вопрос(1)

Ваш ответ на вопрос