Tengo el siguiente código que completa una lista desplegable de países, llamo a este código en page_load de un control de usuario .ascx.
private void PopulateCountries() { var countries = new List<Country>(); countries = Datasources.GetCountries() .Where(p => p.Active && !string.IsNullOrWhiteSpace(p.Country_ISO_Code)) .OrderBy(p => p.Country_Name).ToList(); ddlCountry.DataSource = countries; ddlCountry.DataTextField = "Country_Name"; ddlCountry.DataValueField = "Country_ID"; ddlCountry.DataBind(); }En la misma carga de página, también invoco el siguiente código para completar los sitios en el país seleccionado.
private void PopulateSites(int countryId) { try { myData = Datasources.GetSitesAvailable(); ddlSite.DataSource = myData.Where(p => p.Active && p.CountryId == countryId).OrderBy(p => p.SiteName)); ddlSite.DataTextField = "SiteName"; ddlSite.DataValueField = "SiteId"; } catch (Exception exception) { lblError.Text = exception.Message; return; } }A continuación se muestra mi Page_Load
protected void Page_Load(object sender, EventArgs e) { PopulateCountries(); int countryId; int.TryParse(ddlCountry.SelectedValue, out countryId); PopulateSites(countryId); }El desafío al que me enfrento es que no quiero configurar AutoPostBack="True" en ddlCountry. Quiero actualizar ddlSite con sitios para el país seleccionado únicamente en Javascript.
Quiero hacer algo como ddlCountry.Attributes["onchange"] , luego obtener el país seleccionado y actualizar la lista desplegable "ddlSite".
¿Alguien sabe cuál es la mejor manera de resolver esto?