I had a similar need and it took me three steps. See if this works for you.
I took an approach similar to your first where I defined the column with the <br> in the displayName like so:
new DataGridColumn{name="O5DTDUETI", displayName="Statement<br>Due to<br>Investor", width=DATE_WIDTH},
Notice I also set the width...
Then I defined a header behavior that set the cell height, otherwise the header cells would have different heights depending on how many rows in the title.
function SetHeaderHeight (grid DataGrid in, cell Widget in, rowData ANY in, rowNumber INT in, column DataGridColumn in)
cell.height = 50;
end
Finally I copied the EglRuiDataGridHeaderLabel css class into my local css file and changed the overflow: hidden; to overflow: visible;
.EglRuiDataGridHeaderLabel {
overflow: visible;
}
Kendall.Coolidge