我正在尝试使用我已经创建的自定义保存搜索中的数据填充套件中的子列表。我的问题是,子列表仅填充与我正在执行的已保存搜索“类型”相对应的字段中的数据。例如,在该实例中,保存的搜索是“事务”类型搜索。例如,如果我想通过保存的搜索引用客户字段,例如“姓名”和“帐单地址”,则此数据将不会填充套件中的子列表。交易记录本身引用的所有其他字段都会填充子列表。我只是想知道是否有人遇到过同样的问题,无论如何,这是我正在尝试实现的代码。
var form,
sublist;
//GET
if (request.getMethod() == 'GET')
{
//create form
form = nlapiCreateForm('Test Custom Suitelet Form', false);
//create sublist to show results
sublist = form.addSubList('custpage_sublist_id', 'list', 'Item List');
//form buttons
form.addSubmitButton('Submit');
form.addResetButton('Reset');
// run existing saved search
var searchResults = nlapiSearchRecord('transaction','customsearchID');
var columns = searchResults[0].getAllColumns();
// Add the search column names to the sublist field
for ( var i=0; i< columns.length; i++ )
{
sublist.addField(columns[i].getName() ,'text', columns[i].getLabel() );
nlapiLogExecution('DEBUG', 'Column Label',columns[i].getLabel());
}
//additional sublist fields
sublist.addMarkAllButtons();
sublist.addField('custfield_selected', 'checkbox', 'Selected');
sublist.setLineItemValues(searchResults)
response.writePage(form);
}
最佳答案
如果您查看 nlobjSublist 文档,您会发现 sublist.setLineItemValues 也可以采用哈希数组。有效的是:
function getJoinedName(col) {
var join = col.getJoin();
return join ? col.getName() + '__' + join : col.getName();
}
searchResults[0].getAllColumns().forEach(function(col) {
sublist.addField(getJoinedName(col), 'text', col.getLabel());
nlapiLogExecution('DEBUG', 'Column Label', col.getLabel());
});
var resolvedJoins = searchResults.map(function(sr) {
var ret = {
id: sr.getId()
};
sr.getAllColumns().forEach(function(col) {
ret[getJoinedName(col)] = sr.getText(col) || sr.getValue(col);
});
return ret;
});
sublist.setLineItemValues(resolvedJoins);
关于javascript - Netsuite 将搜索保存到 Suitelet 子列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33742377/