WebDataSource can definitely help, and it does support WebListboxCellRenderers. It won’t display 800 rows at once. Instead, it will be gradually asking you to return an array of WebListboxRowData, while the user is scrolling.
Private Function RowData(RowCount as Integer, RowOffset as Integer, SortColumns as String) As WebListboxRowData()
// Part of the WebDataSource interface.
Var result() As WebListBoxRowData
Var style As New WebStyle
style.Bold = True
// This part probably will be inside a loop, after querying the DB
Var row As New WebListBoxRowData
row.Value("someColumnName", "Some text")
row.Value("anotherColumn", New WebListBoxStyleRenderer(style, "Styled text"))
result.Add(row)
Return result
End Function
Edit: There is an example under Platforms > Web > Listbox > Listbox with a Datasource.