dbqf
dbqf copied to clipboard
Implement hierarchical data browsing
In the previous version of the library (in SVN, not git; not included in commit history), the tree layout was defined by an XML template, with a callback for formatting when the threaded operation for loading child nodes had completed.
Problems with the old method:
- Most of the logic was hard coded into a
UserControl
with a privateTreeView
so you couldn't do anything with the actual tree control. This is pretty much the issue - you have no control. - Attempting to handle node Font from the formatting callback caused
OutOfMemoryException
for large data due to GDI objects exceeding 10,000 (a fault of the WinFormsTreeView
in fact). - Efficiency issues relating to the way queries were constructed and executed. This has been resolved with the current library.
Aims:
- Still provide the killer feature of having a fully searchable tree based on any field anywhere in the data that is very responsive (whether this is threaded or not).
- Disconnect the UI from the definition and fetching of the tree (obviously). This will allow using other UI toolkits with the hierarchical data without code duplication.
- Provide modular code to swap in a different fetch strategy so the UI is oblivious to whether the data has come from a database via the standard dbqf functionality or whether the strategy is just supplying nodes itself (e.g. some nodes may not be backed by data like a root node labelled 'Invoices').
- Add DTO for serialisation of tree definition if plausible to do so (it'll probably needs it's own basic fetch strategy to accompany it)
- Nice to have: provide a user-editable tree configurator.