2009-10-18 15 views
8

Ülke, Eyalet ve Metro için 3 adım bırakma görevim var. Ben kullanıcı seclect Ülke sonra Devlet jQuery doldurmak dropdownlist zaman istediğiniz basıp doyurmak sonra Metro dropdownlist dolgu (ajax DropDownList basamaklı gibi) .Bu süreç i JQuery ile yapmak istediğinizde.Bind DropDownlists with JQuery içinde Asp.Net

cevap

10

Bunu ASP.NET MVC'de açıklayacağım, ancak bir ASP.NET web hizmeti yazıyorsanız veya aynı kodu yapmak için kodunuza birkaç sayfa yöntemi koyarsanız aynı şey elde edilebilir. Ayrıca bir 3. parti çözümü ya da WCF'deki bir JSON serileştiricisine de ihtiyaç duyulur. MVC kullanarak

öncelikle üç kontrolör eylemleri atalım - sırasıyla devletleri ve metropoller'i almak için iki kişi ülke statik olacak, bir sayfayı görüntülemek için, ve: görünümünde

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

, üçümüzü var DropDownLists, bir sen böyle bir Ajax çağrısı ile jQuery durumları alabilirsiniz [ "Ülkeler"] nesne, bu ülkeler adlı görüyorsun ViewData bağlıdır:

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

Metrolar analojik dolu olacak açılır, hem ülke hem de eyalet seçimini sunucuya geçirerek d bir dizi metro alanına sahip bir JSON nesnesinin geri alınması.

Depo uygulamasının ayrıntılarını dışarıda bıraktım, sadece sonuç değişkenini sunucuda bir grup eyalet/metro alanı ile doldurun. Ayrıca, Devlet sınıfının iki özelliğe sahip olacağı varsayımı yaptım - Abbr (ör., CA) ve İsim (örneğin, Kaliforniya).

Umarım, size herhangi bir şekilde yardımcı olur veya en azından size bir şekilde çözüme yönelir.

+1

çok teşekkürler, benim için de çalışıyor! , <1 değerinin önüne koydu. – Michel

+0

Oh, farketmedim! Teşekkürler, cevabımı düzenledim. –

+0

Bir not, 'json' ayrıştırma ve List 'gibi bir şey döndürme,' states.d' kullanmak zorunda kaldı ya da özellikler her zaman tanımsız. – atconway