Friday, August 12, 2016

X.PagedList.Mvc -1 with Dropdown for selecting PageSize

Ref. link:  http://blog.instance-factory.com/?cat=39
namespace JQueryValidationPluginFinal.Helpers
{
    public static class DefaultValuesForPaging
    {
        public static SelectList ItemsPerPageList
        {
            get
            {
                return (new SelectList(new List<int> { 5, 10, 25, 50, 100 },
                selectedValue: 10));
            }
        }
    }
}



@using X.PagedList;
@using X.PagedList.Mvc;
@model X.PagedList.IPagedList<JQueryValidationPluginFinal.Models.User>
@using JQueryValidationPluginFinal.Helpers;




@{
    ViewBag.Title = "PagingEx";
    Layout = "~/Views/Shared/_Layout.cshtml";
}     
<link href="~/Content/PagedList.css" rel="stylesheet" />

<h2>Index</h2>

<p>
    @Html.ActionLink("Create New", "CreateNew1")
</p>
<p>
    Total Emps: @Model.TotalItemCount
</p>
<table class="table">
    <tr>
        <th>

            @using (Html.BeginForm("PagingEx", "Users", FormMethod.Post))

            {

                @Html.DropDownList("pageSize", DefaultValuesForPaging.ItemsPerPageList, new { @id = "pageSize", onchange = "this.form.submit();" })

            }

        </th>
    </tr>
    <tr>
        <th>
            @Html.ActionLink("Department", "PagingEx", new { sortOrder = "Department", CurrentSort = ViewBag.CurrentSort })
        </th>
        <th>
            @Html.ActionLink("FirstName", "PagingEx", new { sortOrder = "FirstName", CurrentSort = ViewBag.CurrentSort })
        </th>
        <th>
            @Html.DisplayNameFor(model => model.FirstOrDefault().LastName)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.FirstOrDefault().UserName)
        </th>
        <th>
            @*@Html.DisplayNameForModel(model => model.Password)*@
        </th>
        <th>
            @Html.DisplayNameFor(model => model.FirstOrDefault().ConfirmPassword)
        </th>
        <th>
            @Html.ActionLink("EmailID", "PagingEx", new { sortOrder = "EmailID", CurrentSort = ViewBag.CurrentSort })
        </th>
        <th></th>
    </tr>

    @foreach (var item in Model)
    {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.Department.Name)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.FirstName)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.LastName)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.UserName)
            </td>
            <td>
                @*@Html.DisplayFor(modelItem => item.Password)*@
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.ConfirmPassword)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.EmailID)
            </td>
            <td>
                @Html.ActionLink("Edit", "Edit", new { id = item.UserID }) |
                @Html.ActionLink("Details", "Details", new { id = item.UserID }) |
                @Html.ActionLink("Delete", "Delete", new { id = item.UserID })
            </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("PagingEx", new { page, pageSize =   
   ViewBag.CurrentItemsPerPage }), PagedListRenderOptions.ClassicPlusFirstAndLast)
            
 Showing @Model.FirstItemOnPage to @Model.LastItemOnPage of @Model.TotalItemCount records.
            @*</div>*@
        </td>
    </tr>

</table>









public ActionResult PagingEx(string sortOrder, string CurrentSort, int? page,int pageSize = 10)
        {
            // int pageSize = 10;
            ViewBag.CurrentItemsPerPage = pageSize;

            int pageIndex = 1;
            pageIndex = page.HasValue ? Convert.ToInt32(page) : 1;

            ViewBag.CurrentSort = sortOrder;
            sortOrder = String.IsNullOrEmpty(sortOrder) ? "UserID" : sortOrder;
          
            var users = (from u in db.User.Include(d => d.Department) select u); 
                      
            IPagedList<JQueryValidationPluginFinal.Models.User> usersList = null;


            switch (sortOrder)
            {
                case "UserID":
                    if (sortOrder.Equals(CurrentSort))
                        usersList = users.OrderByDescending(m => m.UserID).ToPagedList(pageIndex, pageSize);
                    else
                        usersList = users.OrderBy(m => m.UserID).ToPagedList(pageIndex, pageSize);
                    break;
                case "FirstName":
                    if (sortOrder.Equals(CurrentSort))
                        usersList = users.OrderByDescending(m => m.FirstName).ToPagedList(pageIndex, pageSize);
                    else
                        usersList = users.OrderBy(m => m.FirstName).ToPagedList(pageIndex, pageSize);
                    break;
                case "Department":
                    if (sortOrder.Equals(CurrentSort))
                        usersList = users.OrderByDescending(m => m.Department.Name).ToPagedList(pageIndex, pageSize);
                    else
                        usersList = users.OrderBy(m => m.Department.Name).ToPagedList(pageIndex, pageSize);
                    break;

                case "EmailID":
                    if (sortOrder.Equals(CurrentSort))
                        usersList = users.OrderByDescending(m => m.EmailID).ToPagedList(pageIndex, pageSize);
                    else
                        usersList = users.OrderBy(m => m.EmailID).ToPagedList(pageIndex, pageSize);
                    break;
            }
            return View(usersList);  
        }













0 comments:

Post a Comment

Twitter Delicious Facebook Digg Stumbleupon Favorites More