namespace EFCF.Models { public class Person { public int ID { get; set; } public string Name { get; set; } public string City { get; set; } public string State { get; set; } } }
****** CONTROLLER ********
public ActionResult Index(string sortOrder, string CurrentSort, int? page) { int pageSize = 10; int pageIndex = 1; pageIndex = page.HasValue ? Convert.ToInt32(page) : 1; ViewBag.CurrentSort = sortOrder; sortOrder = String.IsNullOrEmpty(sortOrder) ? "ID" : sortOrder; var personlist = from s in GetPerson() select s; switch (sortOrder) { case "ID": if (sortOrder.Equals(CurrentSort)) personlist = personlist.OrderByDescending(m => m.ID).ToPagedList(pageIndex, pageSize); else personlist = personlist.OrderBy (m => m.ID).ToPagedList(pageIndex, pageSize); break; case "Name": if (sortOrder.Equals(CurrentSort)) personlist = personlist.OrderByDescending (m => m.Name).ToPagedList(pageIndex, pageSize); else personlist = personlist.OrderBy (m => m.Name).ToPagedList(pageIndex, pageSize); break; case "City": if (sortOrder.Equals(CurrentSort)) personlist = personlist.OrderByDescending (m => m.Name).ToPagedList(pageIndex, pageSize); else personlist = personlist.OrderBy (m => m.Name).ToPagedList(pageIndex, pageSize); break; case "State": if (sortOrder.Equals(CurrentSort)) personlist = personlist.OrderByDescending (m => m.Name).ToPagedList(pageIndex, pageSize); else personlist = personlist.OrderBy (m => m.Name).ToPagedList(pageIndex, pageSize); break; } return View(personlist); } public IList<Person> GetPerson() { IList<Person> list = new List<Person>(); for (int i = 1; i <= 50; i++) { Person p = new Person(); p.ID = i; p.Name = "Test" + i; p.City = "City" + i; p.State = "State" + i; list.Add(p); } return list; }
******** VIEW INDEX.CSHTML *********
@model PagedList.IPagedList<EFCF.Models.Person> @using PagedList.Mvc; @{ ViewBag.Title = "Index"; } <h2>Index</h2> <p> @Html.ActionLink("Create New", "Create") </p> <link href="~/Content/PagedList.css" rel="stylesheet" /> @using (Html.BeginForm()) { <table> <tr> <th style="border: 2px solid black; text-align: center; width: 12%"> @* @Html.ActionLink("Name", "Index", new { sortOrder = "Name", CurrentSort = ViewBag.CurrentSort })*@ @Html.DisplayNameFor(model => model.First().Name) </th> <th style="border: 2px solid black; text-align: center; width: 12%"> @Html.ActionLink("City", "Index", new { sortOrder = "City", CurrentSort = ViewBag.CurrentSort }) </th> <th style="border: 2px solid black; text-align: center; width: 12%"> @Html.ActionLink("State", "Index", new { sortOrder = "State", CurrentSort = ViewBag.CurrentSort }) </th> <th style="border: 2px solid black; text-align: center; width: 12%"></th> </tr> @foreach (var item in Model) { <tr> <td> @Html.DisplayFor(modelItem => item.Name) </td> <td> @Html.DisplayFor(modelItem => item.City) </td> <td> @Html.DisplayFor(modelItem => item.State) </td> <td> @Html.ActionLink("Edit", "Edit", new { id = item.ID }) | @Html.ActionLink("Details", "Details", new { id = item.ID }) | @Html.ActionLink("Delete", "Delete", new { id = item.ID }) </td> </tr> } <tr> <td colspan="4"> @*<div id='Paging'>*@ Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber) of @Model.PageCount @Html.PagedListPager(Model, page => Url.Action("Index", new { page }), PagedListRenderOptions.ClassicPlusFirstAndLast) @*</div>*@ </td> </tr> </table> }
0 comments:
Post a Comment