首页 > 解决方案 > 如何根据addField动态过滤子列表?

问题描述

我有一个调用子列表的 Suitelet,但我想在单击“addButton”时触发过滤器。

套房:

    var form = serverWidget.createForm({ title : 'Unbilled Orders', hideNavBar : false });
    form.addField({id: 'name_criteria', label: 'Name', type: serverWidget.FieldType.MULTISELECT, source: 'customer'});
    form.addButton({label: 'Filter',id: 'custpage_mybutton',functionName: 'myButtonFunction()'});
    
    var name_field = context.request.parameters.name_criteria;
    //# Filter does not work as name_field='' #
    var objSublistSearch = search.load({ id: SEARCH_ID });
    var filterArray = objSublistSearch.filters;
    filterArray.push(search.createFilter({ name: 'entity', operator: search.Operator.ANYOF, values: name_field }));
    objSublistSearch.filters = filterArray;
    
    var SublistSearch = objSublistSearch.run();
...
 context.response.writePage(form);

客户端脚本(不更新子列表):

function myButtonFunction() {
           // Load current record in order to manipulate it
           var objRecord  = currentRecord.get()
         var field2 =  objRecord.getValue({
               fieldId: 'name_criteria',
           });
         log.debug("field2",field2 );}

标签: netsuitesuitescriptsuitescript2.0

解决方案


您可以使用 currentRecord 的 insertLine 和 removeLine 方法来更新子列表,但请注意它们仅适用于可编辑的子列表(INLINEEDITOR 和 EDITOR)。

如果您使用的是 SublistType.LIST,则必须在 myButtonFunction() 中重新加载套件。


推荐阅读