Suitescript Pagination

时间:2017-04-18 07:46:02

标签: netsuite suitescript

我一直在尝试创建一个kitlet,允许使用suitescript 1.0在netsuite中的项目记录集合上运行已保存的搜索

分页在其他任何地方都很容易,但我无法理解如何在NetSuite中实现它。

例如,我们有3,000个项目,我试图将结果限制为每页100个。

我很难理解如何将起始行和最大行参数应用为过滤器,以便我可以运行搜索以返回搜索中的记录数

我已经看到很多脚本允许你超过1,000条记录的限制,但我试图限制屏幕上显示的数量。但我不知道如何做到这一点。

非常感谢任何提示

function searchItems(request,response)
{
    var start = request.getParameter('start');
    var max = request.getParameter('max');

    if(!start)
    {
      start = 1;
    }
    if(!max)
    {
      max = 100;
    }

    var filters = [];
    filters.push(new nlobjSearchFilter('category',null,'is',currentDeptID));
    var productList = nlapiSearchRecord('item','customsearch_product_search',filters);
    if(productList)
    {
      response.write('stuff here for the items');
    }
}

1 个答案:

答案 0 :(得分:1)

您可以通过几种不同的方式来解决这个问题。无论哪种方式,您肯定需要通过有意义且一致的内容(例如内部ID)对搜索结果进行排序。确保您已将结果排序在已保存的搜索定义中,或者在脚本中添加搜索列。

您可以像以前一样继续构建搜索,然后只使用productList数组上的原生slice method。您可以使用startend参数作为参数传递给slice

另一种方法是使用异步API进行搜索。它看起来与此类似:

var search = nlapiLoadSearch("item", "customsearch_product_search");
search.addFilter(new nlobjSearchFilter('category',null,'is',currentDeptID));
var productList = search.runSearch().getResults(start, end);

有关此方法的更多参考,请查看标题为“搜索API”的NetSuite帮助页面和nlobjSearch的参考页。