2009-10-18 8 views
8

Tengo 3 listas desplegables para País, Estado y Metro. Quiero que seleccionarlo cuando el usuario País continuación Estado lista desplegable llenar Jquery y cuando seleccione Estado continuación metro relleno lista desplegable (como en cascada lista desplegable de Ajax) .Estos proceso que quiero hacer con jQuery.Enlazar listas de abandono con JQuery en Asp.Net

Respuesta

10

Voy a describirlo en ASP.NET MVC, pero lo mismo se puede lograr si escribe un servicio web ASP.NET o si simplemente pone algunos métodos de página en su código para hacer lo mismo. También necesitaré un serializador JSON, ya sea una solución de terceros o la de WCF.

El uso de MVC, en primer lugar, vamos a tener tres acciones del controlador - una para mostrar la página, los países serán estáticas, y dos para los estados y los metros, respectivamente:

public ActionResult Index() 
{ 
    ViewData["Countries"] = _countryRepository.GetList(); 
    return View(); 
} 

public ActionResult States(string countryCode) 
{ 
    var states = _stateRepository.GetList(countryCode); 
    return Json(states); 
} 

public ActionResult Metros(string countryCode, string state) 
{ 
    var metros = _metroRepository.GetList(countryCode, state); 
    return Json(metros); 
} 

En la vista, que tiene tres DropDownLists, uno está obligado a la ViewData [ "Países"] objeto, dicen que es nombrado países, puede obtener los estados de jQuery con una llamada Ajax como esto:

$('#Countries').change(function() { 
    var val = $(this).val(); 
    $states = $('#States'); 
    $.ajax({ 
     url: '<%= Url.Action('States') %>', 
     dataType: 'json', 
     data: { countryCode: val }, 
     success: function(states) { 
      $.each(states, function(i, state) { 
       $states.append('<option value="' + state.Abbr+ '">' + state.Name + '</option>'); 
      }); 
     }, 
     error: function() { 
      alert('Failed to retrieve states.'); 
     } 
    }); 
}); 

los metros desplegable se llenaría analógicamente, pasando la selección de país y estado al servidor d recuperar un objeto JSON con una variedad de áreas metropolitanas.

Olvidé los detalles de la implementación del repositorio, simplemente llene de alguna manera la variable de resultado en el servidor con una colección de estados/áreas metropolitanas. También asumí que la clase estatal tendría dos propiedades: Abbr (por ejemplo, 'CA') y Nombre (por ejemplo, California).

Espero que lo ayude de alguna manera, o al menos lo dirija de alguna manera hacia la solución.

+1

muchas gracias, ¡también funciona para mí! tuvo que poner un Michel

+0

¡Oh, no me di cuenta! Gracias, he editado mi respuesta. –

+0

Una nota, si no analizaba 'json' y devolvía algo como' List ', tenía que usar' states.d' o las propiedades estaban siempre indefinidas. – atconway

Cuestiones relacionadas