Hi Nigel,
The issue you are experiencing is a known limitation of the getMembers() method, whereby the sort order is based on the Master Data and not the order of the datasource result set. Using getData() or getDataAsString() probably won't meet your requirement either because these will return the measure (key figure) values where you must explicitly specify the dimension member, whereas as I understand it you need to retrieve the dimension member texts in the order of the datasource result set.
You can use the Design Studio SDK Data Iterator component to read through your data in the order returned by the data source and populate your text fields accordingly. i.e. The Data Iterator will retain the "Display Order" you have referenced in your question.
All of that being said, to help provide further suggestions, can you clarify the business use case you are trying to implement? For instance, I'm not sure why you have 3 different data sources. What is the sort criteria for the display order in each of these 3 cases?
Regards,
Mustafa.