Пагинация в Suitescript 2.0 Netsuite

Я попытался реализовать разбиение на страницы netsuite в suitescript 2.0, кнопка prev работает, но вместо 20 данных поиска она возвращается как целое. Следующая кнопка не работает, всегда выдает ошибку INVALID_PAGE_RANGE

Вот код люкслета

         var loadSearch = search.load({
            id: 'customsearch_inv123'

        });
        var i = 0;

        var pagedData = loadSearch.runPaged({
            pageSize: 20
        });

        pagedData.pageRanges.forEach(function (pageRange) {

            var lastPageRange = pagedData.pageRanges[pagedData.pageRanges.length - 1];

            var Page = pagedData.fetch({
                index: lastPageRange.index
            });

            if (context.request.parameters.next) {
                Page = Page.next(); 
            }

            if (context.request.parameters.prev) {
                Page =Page.prev();
            }

            Page.data.forEach(function (result) {

                var number = result.getValue({
                    name: 'inventorynumber'
                });

                if (number) {

                    updateSublist.setSublistValue({
                        id: 'custpage_number',
                        line: i,
                        value: number
                    });
                }


                i++;

            });
        });


        // submit button

        form.addSubmitButton({
            label: 'Submit'
        });

        form.addButton({
            id: '_next',
            label: 'Next',
            functionName: 'next'
        });

        form.addButton({
            id: '_prev',
            label: 'Prev',
            functionName: 'prev'
        });


        form.clientScriptModulePath = 'SuiteScripts/client.js';

В клиентском скрипте я написал функцию next и prev и перенаправил на ту же страницу с параметрами next или prev, и на основе этого я вызвал page.next и page.prev.

Если вы реализовали это, пожалуйста, помогите мне.

вот клиентский код.

 next: function () {
                window.location.href = 'example.com' + '&next=t';
            },

            prev: function () {
                window.location.href = 'example.com' + '&prev=t';
            }

person Anurag Kumar    schedule 04.12.2018    source источник


Ответы (1)


Вы должны передать текущий / запрошенный номер страницы из клиентского скрипта, а затем использовать его для получения данных для этой конкретной страницы, как показано ниже.

var pagedData = loadSearch.runPaged({
    pageSize: 20
});

requestedPageNumber = 2

var page = pagedData.fetch({ index: requestedPageNumber });

page.data.forEach(function (result) {
    // result is the searchResult object
    // YOUR CODE GOES HERE
    var number = result.getValue({
        name: 'inventorynumber'
    });
})

Что вы сделали неправильно, так это то, что вы начали с последнего индекса, а затем пытались получить индекс несуществующего массива в случае, если пользователь нажимает далее.

Примечание. предыдущая кнопка должна быть отключена / скрыта там, где нет страниц, чтобы не столкнуться с той же ошибкой, и то же самое можно сделать и для следующей кнопки.

person Avi    schedule 06.12.2018