May 12, 2006 - 02:39 PM
It is indeed possible to have 3 dropdowns, and to change the content of no 2 once no 1 has been selected.
Jun 30, 2006 - 11:42 AM
2000 entries in ANY list is too much from a usability standpoint. Splitting them out to three dropdown lists would be a more manageable solution for your users.
Depending on the technology you're using for your development, there is more than one way to accomplish this.
1) Ajax - Once a user makes a selection from the "Country" dropdown list, a call is made to fetch the items needed to build the "Region" list. Once the selection of "Region" is made, another call will fetch the items for the "City" list.
2) .NET - The flow will be essentially the same as described above, with the new information added when the user does the postback.
The biggest advantage for a user with the Ajax solution, is not having to actually "see" the round-trips to the server.
Jun 30, 2006 - 11:57 AM
3) All the info can be loaded in the first request and the just changed dynamically without further calls to the server.
Jun 30, 2006 - 12:26 PM
Sending all the options down would result in upwards of 90% useless data being shoved down the pipe.
Also, if you decided to add more countries/regions/cities you would have to make those edits to every page that presented these options. Storing them in an XML file or a database would make maintenance much, much easier.
I'm not saying that any solution is 100% ideal, but there are some ways that are better than others.
Jun 30, 2006 - 02:36 PM
I think I'd go for the ajax solution as rcastagna proposed.
Jun 30, 2006 - 02:46 PM
No need to edit every page manually if you wanna change the options. It can still be dynamically created from an XML file. This is besides the point.
Even though 90% of data could be unnecessary it is still possible that this solution is quicker, gives less load on server and a smoother experience for the user that AJAX. 90% of a couple of KB is still just a couple of KB...
But personally I would probably prefer AJAX too. Just because it's cool ;-)
Jun 30, 2006 - 02:53 PM