I'm using the DevExpress Xtra TreeList control to display a hierarchical set of questions and responses - think of a complex survey form, containing sections, subsections and a variety of questions.
The form is working in unbound mode, with no dataset nor any databinding.
As a part of the information displayed for each question, some background is obtained by calling a webservice on a background thread; results from these webservice calls are then used to populate the TreeList via calls to TreeListNode.SetValue()
.
Presently, these calls to SetValue()
are causing any active editors to close, discarding the user's current input - a very user unfriendly experience.
How can I ensure the user's editing process is unaffected by these background updates?
The only similar questions I've found have been on the DevExpress forums, where the suggestion is a forced commit of the user's entries, which avoids loss of data but otherwise does nothing to fix a poor user experience. Since these all dated from 2007, I'm hoping the situation has now changed. Is it possible to update nodes without altering the state of the users own activity?
Background: A typical screen would have 500+ rows, with the webservice call for for each row taking around 0.6s to return. Forcibly committing or cancelling the user's actions every 0.6s is simply not acceptable, and forcing users to wait for processing to complete (>5minutes) before they can make any changes is equally poor.
Short answer: You can't
Changing a value in the TreeList will result in any current user editing being cancelled, reguardless of the use of Binding or not.
Official response from DevExpress: