You must Sign In to post a response.
  • Category: ASP.Net MVC

    Selected District not retrieved for employee in edit view get

    http://www.dreamincode.net/forums/topic/396532-selected-district-not-retrieved-for-employee-in-edit-view-get/
    in link above it show what i need
    I have three drop down list Country,City,District
    three drop down list cascade each other
    meaning select country fill City and select City fill District in edit or create both
    in edit view i can get value selected previous for country and city for employee i need to edit
    but District cannot get selected value for employee i need to edit

    in Edit view (get)

    @model WebCourse.Models.Customemployee2
    @{
    Layout = null;
    }

    <!DOCTYPE html>

    <html>
    <head>
    <meta name="viewport" content="width=device-width" />
    <title>Edit</title>
    <script src="~/scripts/jquery-1.10.2.js"></script>
    <script>
    $(function () {
    $("#CountryId").change(function () {
    $("#citylist").empty();
    // alert("error");
    var x = $(this).val();
    $.ajax({
    url: "/empcourse/getcitybyid",
    data: { id: x },
    success:function(res)
    {
    $.each(res, function (i, e) {
    if (e.Id == $("#cityidhidden").val())
    {
    $("#citylist").append("<option selected value='" + e.Id + "'>" + e.CityName + "<option>")
    }
    else
    {
    $("#citylist").append("<option value='" + e.Id + "'>" + e.CityName + "<option>")
    }


    });
    }
    });


    });
    $("#CountryId").change();
    $("#citylist").change(function () {
    $("#districtlist").empty();
    // alert("error");
    var y = $(this).val();
    $.ajax({
    url: "/empcourse/getdistrictbyid",
    data: { id: y },
    success: function (res) {
    $.each(res, function (i, e) {
    if (e.Id == $("#disthidden").val()) {
    $("#districtlist").append("<option selected value='" + e.Id + "'>" + e.DistrictName + "<option>")
    }
    else
    {
    $("#districtlist").append("<option value='" + e.Id + "'>" + e.DistrictName + "<option>")

    }

    });
    }
    });


    });

    $("#citylist").change();
    });
    </script>
    </head>
    <body>
    <div>
    @using (Html.BeginForm())
    {
    <div>
    <input type="hidden" value="@ViewBag.Cityid" id="cityidhidden" />
    <input type="hidden" value="@ViewBag.dist" id="disthidden" />
    Name:@Html.TextBoxFor(a => a.Name)
    <br />
    Country:@Html.DropDownList("CountryId")
    <br />
    City:<select id="citylist" name="CityId"></select>
    <br />
    District:<select id="districtlist" name="DistrictId"></select>
    <br />
    <input type="submit" />
    </div>
    }

    </div>
    </body>
    </html>
    in Edit function in controller empcourse

    public class empcourseController : Controller
    {
    mycourseEntities db = new mycourseEntities();

    // GET: empcourse

    public ActionResult Edit(int id)
    {
    Employee old = db.Employees.Find(id);
    if (old != null)
    {
    // country and city working
    //district not working
    int countryid = old.Destrict.City.Country.Id;
    var vm = new Customemployee2();
    vm.Name = old.Name;
    ViewBag.CountryId = new SelectList(db.Countries.ToList(), "Id", "CountryName",countryid);
    ViewBag.Cityid = old.Destrict.City.Id;
    ViewBag.dist = old.DistrictId;
    return View(vm);
    }
    //getcitybyid retrieve city it call in ajax in jquery and it working
    public JsonResult getcitybyid(int id)
    {
    db.Configuration.ProxyCreationEnabled = false;
    return Json(db.Cities.Where(a => a.CountryId == id), JsonRequestBehavior.AllowGet);
    }
    //getdistrictbyid retrieve district it call in ajax in jquery and it working
    public JsonResult getdistrictbyid(int id)
    {
    db.Configuration.ProxyCreationEnabled = false;
    return Json(db.Destricts.Where(a => a.CityId == id), JsonRequestBehavior.AllowGet);
    }

    }
    in model Customemployee2

    public class Customemployee2
    {
    public string Name { get; set; }
    public int DistrictId { get; set; }

    }
    }
  • #767679
    Which part you are missing the employee.
    Are you missing in the the employee in the controller or view
    While debugging are you getting the employee from the database?
    If you are getting the employee from database there will be some issue in the JQuery ajax call or binding control.
    Can you try little bit deeper and give some information so that we can easily identify the issue.

    By Nathan
    Direction is important than speed

  • #767690
    Hai Ahmedsa,
    There are few things which you need to remember when working with the drop-down list in MVC.
    1. Your model object should have the type of SelectList

    public SelectList Employee { get; set; }

    2. While binding in the view, you need to use the code as below:

    @Html.DropDownListFor(m=>m.SelectedEmployee , Model.Employee, "Select Employee")

    Hope it will be helpful to you.

    Regards,
    Pawan Awasthi(DNS MVM)
    +91 8123489140 (whatsApp), +60 14365 1476(Malaysia)
    pawansoftit@gmail.com


Sign In to post your comments