我是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)
答案 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;
}