2015-11-16 69 views
1

我想用我已創建的自定義保存的搜索中的數據填充suitelet中的子列表。我的問題是,子列表僅填充來自與我正在執行的保存搜索的「類型」相對應的字段的數據。例如,在這種情況下,保存的搜索是「事務」類型的搜索。例如,如果我想通過保存的搜索引用客戶字段,請說「姓名」和「結算地址」,則此數據不會填充suitelet中的子列表。在交易記錄中引用的所有其他字段本身都會將子列表填充到正確的位置。我只是想知道是否有人遇到過同樣的問題,無論如何,這是我試圖實現的代碼。Netsuite保存搜索到Suitelet子列表

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

    } 
+0

我已經嘗試了幾種方法我自己,並找不到正確的答案。我嘗試以各種組合方式連接名稱和列名,因爲這是NetSuite代表搜索結果的方式,但這不起作用。試過,但失敗了。如果有其他人找到正確的答案,會非常感興趣。在一個稍微不相關的說明中,我相信你可以在調用'sublist.addField'時使用'columns [i] .getType()'而不是硬編碼''text''。 – erictgrubaugh

+0

謝謝你的幫助。我一定會嘗試你的getType()方法。我沒有在這裏使用它的原因是因爲如果你願意的話,那些只是列標題名稱。它們的類型並不重要,因爲它們只是列上的文本。我嘗試了很多不同的方法來實現它,我非常有興趣看看是否有人找到方法。 –

回答

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

你是個天才男人,非常感謝你。 –

相關問題