Populate Select/ListBox items From Html.DropdownList() Selected Value Using jQuery In ASP.NET MVC 4
After familiarizing some basic concepts on ASP.NET MVC 4, I decided to create a simple application which populates a listbox control from a DropDownList helper selected value using jQuery. This simple application included the Entity Framework which targets the AdventureWorks DB.Here's the Model Class:
Here's the View page:
Here's the controller class:
Sample output page without record:
Sample output page with record:
public class CountryRegionsContext : Models.AdventureWorks2008Entities { public DbSet<CountryRegion> Country_Regions { get; set; } public DbSet<StateProvince> State_Province { get; set; } }
@{ ViewBag.Title = "Index"; Layout = "~/Views/Shared/_Layout.cshtml"; } <h2>Adventure Works Country and State Province Information</h2> <script> $(document).ready(function () { $("#State").prop("disabled", true); $("#Country").change(function () { if ($("#Country").val() != "Select") { var CountryProvinces = {}; CountryProvinces.url = "/CountryRegions/StateProvinces"; CountryProvinces.type = "POST"; CountryProvinces.data = JSON.stringify({ Country: $("#Country").val() }); CountryProvinces.datatype = "json"; CountryProvinces.contentType = "application/json"; CountryProvinces.success = function (StateProvinceList) { $("#State").empty(); if (StateProvinceList != undefined) { if (StateProvinceList.length > 0) { for (var i = 0; i < StateProvinceList.length; i++) { $("#State").append("<option>" + StateProvinceList[i] + "</option>"); } $("#State").prop("disabled", false); } else alert("No State or Region for that Country!"); } else { alert("No State or Region for that Country!"); } }; CountryProvinces.error = function () { alert("Error in Retrieving State Province Information!"); }; $.ajax(CountryProvinces); } else { $("#State").empty(); $("#State").prop("disabled", true); } }); }); </script> @using (Html.BeginForm("Index", "CountryRegions", FormMethod.Post, new { id = "countryRegionsForm" })) { @Html.AntiForgeryToken() <h4>Select Country & States</h4> <hr /> @Html.ValidationSummary() <div> @Html.Label("Select Country:") <div> @Html.DropDownList("Country", ViewData["CountryInfo"] as SelectList) </div> </div><br /> <div> @Html.Label("State Province") <div> <select id="State" name="lstStates" size="15" style="width:300px;"></select> </div> </div> }
public class CountryRegionsController : Controller { private CountryRegionsContext context = new CountryRegionsContext(); private List<CountryRegion> CountryNameList = new List<CountryRegion>(); private List<string> StateProvinceList = new List<string>(); // GET: /CountryRegions/ public ActionResult Index() { SelectList countries; if (context.Country_Regions.ToList().Count > 0) { CountryNameList.AddRange(context.Country_Regions.ToList().OrderBy(t => t.Name)); countries = new SelectList(CountryNameList, "CountryRegionCode", "Name"); ViewData["CountryInfo"] = countries; } return View(); } public JsonResult StateProvinces(string Country) { (from province in context.State_Province where province.CountryRegionCode == Country select new { name = province.Name }).ToList().ForEach(data => { StateProvinceList.Add(data.name); }); return Json(StateProvinceList); } }
Sample output page with record:
Comments
Post a Comment