setRedirectURLToSearchResults()不重定向

时间:2016-11-03 21:58:13

标签: netsuite suitescript

我是NetSuite的新手,我遇到了问题。我通过用户事件脚本在表单上创建了一个按钮。 该按钮调用客户端脚本,该脚本执行已保存的搜索。搜索结果应显示给用户。

所有内容都位于一个文件中:

function userEventBeforeLoad_AddSearchButton(type, form, request){
    if(type == 'view' || type == 'edit'){
        form.setScript('customscript_tvg_project_search_button');
        var projectid = nlapiGetFieldValue('companyname');
        form.addButton("custpage_search", "KHM Search", "performSearch('" + projectid + "')");  
    }
}

function performSearch(projectid) {
    console.log('test in client'); 
    alert('projectid = ' + projectid);

    var obj =  nlapiLoadSearch(null, 'customsearch_project_cost_detail_sublist');
    obj.setRedirectURLToSearchResults();
}

我为userEventBeforeLoad_AddSearchButton()创建了一个用户事件脚本记录。和performSearch()的客户端脚本记录。

在上面的代码中,创建了按钮并显示警报。但是没有重定向发生。

当我在Firebug中查看结果时,它看起来像这样:

 {"result":"\/app\/common\/search\/searchresults.nl?api=T","id":5}

为什么重定向没有发生的任何想法,以及该怎么做?

编辑:我上面的代码已被删除以简化。我传递 projectid 的原因是我实际上需要过滤搜索结果,起诉以下两行:

var searchFilter = new nlobjSearchFilter('job', null, 'anyof', projectid);
obj.addFilter(searchFilter)

2 个答案:

答案 0 :(得分:1)

虽然documentation确实说明了这一点," afterSubmit用户事件脚本,Suitelet和客户端脚本"支持此方法,但似乎是NS User Group post 3)由Netsuite员工回复遇到与您相同问题的人,API实际上并没有执行重定向客户端:

  

重定向适用于服务器端。使用window.location.assign(url)来   在客户端通过脚本导航。

对此进行测试,我可以看到setRedirectURLToSearchResults确实显示正确"将搜索加载到会话",因此之后添加此行应该可以解决您的问题。

window.location = '/app/common/search/searchresults.nl?api=T';

答案 1 :(得分:0)

setRedirectURLToSearchResults对我来说也不起作用,但由于你使用的是clientcript,你可能想尝试一下:

function performSearch(projectid) {
    console.log('test in client'); 
    alert('projectid = ' + projectid);

    var searchid = 'customsearch_project_cost_detail_sublist';
    location = '/app/common/search/searchresults.nl?searchid=' + searchid;
}