ahmed salah

ahmed salah

  • NA
  • 530
  • 148.8k

How to Update exist course id in EmployeeCourse table

Aug 31 2016 6:06 PM
 
 
in this image above explain what i need
in the following diagarm i have 3 tables Course Employee EmployeeCourse how to save exist courses in edit post and save data In code below i can get data in edit view get but
i cannot update and save data in database in EmployeeCourse table with existing courses
    1. update your edit view model to have a collection of CourseVm  
    2. public class EditEmployeeVm  
    3. {  
    4. public int Id { setget; }  
    5. public string Name { getset; }  
    6. public List<SelectListItem> Courses { getset; }  
    7. public int[] CourseIds { setget; }  
    8. public List<CourseVm> ExistingCourses { setget; }  
    9. }  
    10.   
    11. public class CourseVm  
    12. {  
    13. public int Id { setget; }  
    14. public string Name { setget; }  
    15. }  
    16. Now in your Edit GET action, populate the ExistingCourse collection.  
    17.   
    18. public ActionResult Edit(int id)  
    19. {  
    20. var vm = new EditEmployeeVm { Id=id };  
    21. var emp = db.Employees.FirstOrDefault(f => f.Id == id);  
    22. vm.Name = emp.Name;  
    23. vm.ExistingCourses = db.EmployeeCourses  
    24. .Where(g=>g.EmployeeId==id)  
    25. .Select(f => new CourseVm { Id = f.CourseId,  
    26. Name = f.Course.Name}).ToList();  
    27.   
    28. vm.CourseIds = vm.ExistingCourses.Select(g => g.Id).ToArray();  
    29. vm.Courses = db.Courses.Select(f => new SelectListItem {Value = f.Id.ToString(),   
    30. Text = f.Name}).ToList();  
    31. return View(vm);  
    32. }  
    33. I loop through the ExistingCourses collection and display it.  
    34.   
    35. @model EditEmployeeVm  
    36. @using (Html.BeginForm())  
    37. {  
    38. @Html.HiddenFor(g=>g.Id)  
    39. @Html.LabelFor(f=>f.Name)   
    40. @Html.DropDownList("AvailableCourses" ,Model.Courses,"Select")   
    41. <h4>Existing courses</h4>  
    42. <div id="items"></div>  
    43. foreach (var c in Model.ExistingCourses)  
    44. {  
    45. <div class="course-item">   
    46. @c.Name <a href="#" class="remove" data-id="@c.Id">Remove </a>   
    47. <input type="text" name="CourseIds" value="@c.Id" />  
    48. </div>  
    49. }  
    50. <input type="submit"/>  
    51. }  
    52. the view to handle the remove and add of a course.  
    53.   
    54. @section scripts  
    55. {  
    56. <script>  
    57. $(function() {   
    58. $(document).on("click",".remove",function(e) {  
    59. e.preventDefault();  
    60. $(this).closest(".course-item").remove();  
    61. });   
    62. $('#AvailableCourses').change(function() {  
    63. var val = $(this).val();  
    64. var text =$("#AvailableCourses option:selected").text();  
    65. var existingCourses = $("input[name='CourseIds']")  
    66. .map(function() { return this.value; }).get();  
    67.   
    68. if (existingCourses.indexOf(val) === -1) {  
    69. // Not exist. Add new  
    70. var newItem = $("<div/>").addClass("course-item")  
    71. .append(text+' <a href="#" class="remove" data-id="'+val+'">Remove </a>');  
    72. newItem.append('<input type="text" name="CourseIds"  
    73. value="' + val + '" />');  
    74. $("#items").append(newItem);  
    75. }  
    76. });  
    77. })  
    78. </script>  
    79. }  
    80. So when you submit the form, The CourseIds property will have the course ids (as an array).  
    81.   
    82. [HttpPost]  
    83. public ActionResult Edit(EditEmployeeVm model)  
    84. {  
    85. // WHAT CODE I WRITE HERE TO CHECK EXISTING COURSES AND SAVE DATA  
    86. }  


Answers (1)