2009-10-18 13 views
8

Ho 3 elenchi a discesa per Paese, Stato e Metro. Voglio quando l'utente seclect Paese poi Stato dropdownlist riempire Jquery e quando selezionare Sate poi metropolitana DropDownList di riempimento (come cascata dropdownlist di Ajax) .Questi processo che voglio fare con jQuery.Bind DropDownlists con JQuery in Asp.Net

risposta

10

Ho intenzione di descriverlo in ASP.NET MVC, ma lo stesso può essere ottenuto se si scrive un servizio Web ASP.NET o semplicemente si inseriscono alcuni metodi di pagina nel codice per fare lo stesso - si ' Avremo anche bisogno di un serializzatore JSON, una soluzione di terze parti o quella in WCF.

Utilizzando MVC, prima, diamo tre azioni di controllo - uno per visualizzare la pagina, i paesi saranno statici, e due per ottenere, rispettivamente, gli stati e le metropolitane:

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); 
} 

Nella vista, si dispone di tre DropDownList, uno è legato al Viewdata [ "Paesi"] oggetto, diciamo che è chiamato Paesi, è possibile ottenere gli stati in jQuery con una chiamata AJAX come questo:

$('#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.'); 
     } 
    }); 
}); 

le metropolitane discesa sarebbe riempito analogicamente, passando sia la selezione del paese e dello stato al server d recuperare un oggetto JSON con una serie di aree metropolitane.

Ho omesso i dettagli dell'implementazione del repository, basta riempire la variabile dei risultati sul server con una raccolta di stati/aree della metropolitana in qualche modo. Ho anche ipotizzato che la classe State avrebbe due proprietà: Abbr (ad es., 'CA') e Nome (ad esempio, California).

Spero che ti aiuti in qualche modo, o almeno ti diriga in qualche modo verso la soluzione.

+1

grazie mille, funziona anche per me! ha dovuto mettere un Michel

+0

Oh, non me ne sono accorto! Grazie, ho modificato la mia risposta. –

+0

Una nota, se non si analizza in 'json' e si restituisce qualcosa come' List ', ho dovuto usare' states.d' altrimenti le proprietà erano sempre indefinite. – atconway