1

我正在尝试使用来自我已经创建的自定义保存搜索的数据填充套件中的子列表。我的问题是子列表仅从与我正在执行的已保存搜索的“类型”对应的字段中填充数据。例如,在这种情况下,保存的搜索是“交易”类型的搜索。例如,如果我想使用保存的搜索引用客户字段,例如“姓名”和“帐单地址”,则此数据不会填充套件中的子列表。交易记录本身中引用的所有其他字段都会很好地填充子列表。我只是想知道是否有人遇到过同样的问题,无论如何这是我正在尝试实现的代码。

 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);

    }
4

1 回答 1

2

如果您查看 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);
于 2015-11-16T21:23:29.807 回答