1. Instead of linking data source in database individually for each ddl, it’s better to load a dataset of multi-datatables in one database connection and link each ddl to corresponding datatable in the loaded dataset (You might apply data filter in application layer, if comparing to actual needed data, the total records are not too many.).
2. You can use an update panel (AJAX.NET) and put all ddls in the panel. So when any ddl’s value is selected, you reload data for these ddls, but instead of refresh whole page, it only refreshes the content in the panel.
3. Better not directly use JavaScript to load data to ddls on client-side. Otherwise you cannot use server control properties such as ddl.SelectedValue to obtain data, Instead you have to use traditional approach, Request.Form.Get(control_name) (If you are using master page, even it is complicated to get the control name.). And since these data loaded on client-side are saved in viewstate, when page is posted back, you also need rebind data for these ddls. These will mix it with your normal business logic and increase the complexity.