我尝试在suitescript 2.0中实现netsuite分页,上一个按钮可用,但返回的不是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';
}
答案 0 :(得分:0)
您应该从客户端脚本传递当前/请求的pageNumber,然后使用它来获取该特定页面的数据,如下所示
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'
});
})
您做错了什么是从最后一个索引开始,然后尝试获取不存在的数组索引,以防用户单击下一步。
注意:应该在没有页面的地方禁用/隐藏上一个按钮,以免遇到相同的错误,并且下一个按钮也可以执行相同的操作。