28th Jun 2018Refresh Datatable and paging data after editing data
Here's the code
<script type="text/javascript" charset="utf8" src="https://cdn.datatables.net/1.10.18/js/jquery.dataTables.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.18/css/jquery.dataTables.min.css" />
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/v/dt/dt-1.10.16/sl-1.2.5/datatables.min.css" />
@using PagedList;
@using PagedList.Mvc;
@using Career.WebUI.Models;
@model TemplatesListViewModel
@{
Layout = "~/Views/Shared/_AdminLayout.cshtml";
}
$(document).ready(function () {
$('#example').DataTable({
var table = $('#example').DataTable();
$('#example tbody').on('click', 'tr', function () {
$(this).toggleClass('selected');
});
});
function btnEdit(btn)
{
var table = $('#example').DataTable();
var values = new Array();
var oData = table.rows('.selected').data();
for (var i = 0; i < oData.length ; i++) {
values.push(oData[i][1]);
}
$('input[name=txthidden]').val(values.join(","));
}
@using (Html.BeginForm("Edit", "Admin"))
{
Completed :
@Html.RadioButtonFor(m => m.Completed, "Yes", "Yes")
Yes
@Html.RadioButtonFor(m => m.Completed, "No", "No")
No
@Html.ActionLink("Cancel ", "Index", new { calendarID = Session["calendarID"], personID = Session["personID"] }, new { @class = "btn btn-primary" })
}
<
div style="width:100%" id="content">
<table id="example" class="display" cellspacing="0">
<thead>
<tr>
<th class="text-center"></th>
<th class="text-left" hidden="hidden">ID</th>
<th class="text-center">Student Number</th>
<th class="text-center">Student Name</th>
<th class="text-center">Completed</th>
<th class="text-center">Withdraw Date</th>
</tr>
</thead>
<tbody>
@{
int i = 0;
foreach (var item in Model.CustomStudent)
{
i++;
if (item.Completed == "Yes")
{
Model.ISYesChecked = true;
Model.IsNoChecked = false;
}
else
{
Model.IsNoChecked = true;
Model.ISYesChecked = false;
}
<tr>
<td></td>
<td hidden="hidden">@item.customID</td>
<td class="text-center">@item.StudentNumber</td>
<td class="text-center">@item.StudentName</td>
<td class="text-center">
@Html.RadioButton("Completed" + i, "Yes", Model.ISYesChecked, new { id = "Yes" + i, disabled = "true" })
@Html.Label("Yes" + i, "Yes")
@Html.RadioButton("Completed" + i, "No", Model.IsNoChecked, new { id = "No" + i, disabled = "true" })
@Html.Label("No" + i, "No")
</td>
<td class="text-center">@item.WithDrawDate</td>
</tr>
}
}
</table>
Controller.cs
[HttpPost]
public ActionResult Edit(FormCollection form, string txthidden, TemplatesListViewModel Editview)
{
Domain.Entities.Career cp = new Domain.Entities.Career();
if (ModelState.IsValid)
{
cp.ID = customID;
repository.Save(cp);
TempData["message"] = "Changes are updated successfully!";
return RedirectToAction("Index", new RouteValueDictionary(
new { controller = "Admin", action = "Index", school = Editview.School, page = 1 }));
}
}
public ActionResult Index(string calendarID, string personID, int page = 1)
{
if (calendarID != null && personID != null)
{
Session["calendarID"] = calendarID;
Session["personID"] = personID;
}
int endYear = repository.ActiveYear();
TemplatesListViewModel viewmodel = new TemplatesListViewModel
{
EndYear = endYear,
CustomStudent = repository.CustomStudent
.Where(p => p.CalendarID != 0 && p.CalendarID == Convert.ToInt32(Session["calendarID"].ToString()))
};
return View(viewmodel);
}