我仍然是freemarker的新手,但我相信我刚刚为自己解决了这个问题。它丑陋,但它有效。大多数时候我不会处理数千甚至数百行,因此效率不是这种情况下的大问题。NetSuite 是注入 Freemarker 的系统,它有点痛苦。
本质上,我遍历列表一次并将一个值或另一个值(服务器/本地时间)存储到单个变量中(invoiceDate
在我的情况下)。然后,我将该变量与我需要的其他显示变量一起放入哈希中。然后该哈希是列表中的一行。
显示:我遍历列表,该列表按我的invoiceDate
变量和每一行(散列)排序,我从该键/值对中打印出我需要的信息。
我知道这是 4 年前的事了,但今晚我需要一个答案,直到我这样想才找到答案……希望这对下一个人有帮助!
<#assign y=[]>
<#list record.lines as tmpLine>
<#assign invoiceDate = tmpLine.datecol>
<#if (tmpLine.someIdentifyingMarker != "")>
<#assign invoiceDate = tmpLine.custbody_p_ending_date>
</#if>
<#assign dataLine = {"displayDate":invoiceDate, "Description":tmpLine.description, "CheckNum":tmpLine.custbody_checknumprint, "InvoiceAmount":tmpLine.charge,"Credit":tmpLine.payment,"Remaining":tmpLine.amountremaining,"Balance":tmpLine.balance}>
<#assign y = y+[dataLine]>
</#list>
<#list y?sort_by('displayDate') as line><tr>
<td colspan="4">${line.displayDate}</td>
<td colspan="10">${line.Description}</td>
<td colspan="4"><span style="background-color: rgb(255, 255, 255);">${line.CheckNum}</span></td>
<td align="right" colspan="5">${line.InvoiceAmount}</td>
<td align="right" colspan="4">${line.Credit}</td>
<td align="right" colspan="4"><span style="text-align: -webkit-right; background-color: rgb(255, 255, 255);">${line.Remaining}</span></td>
<td align="right" colspan="5">${line.Balance}</td>
</tr>
</#list></table>