Webgrid Paging, sorting and filtering in ASP.Net MVC

Today, In this tutorial I will show you webgrid Paging, sorting and filtering functionality in asp.net MVC application.

It is an essential approach to using paging, sorting and filtering technique in applications where a lot of data to be loaded from a database. So here in this article, I have tried to show how we can do this just following few simple steps.
Webgrid Paging, sorting and filtering in ASP.Net MVC
First Name Last Name Email City Country
Nagendra Chalamala nag@gmail.com hyderabad India
sdf asd hyderabad
Sourav Mondal souravmondal45@gmail.com Kolkata India
Test Yaa Test@gmail.com Dallas USa
Tony Roy tonyroy@gmail.com Los Angeles USA
varma varma saiharish.vadlamudi@gmail.com hyderabad ind
Webgrid Paging, sorting and filtering in ASP.Net MVC
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Linq.Dynamic;

namespace WebgridPagingSortingFiltering.Controllers
    public class HomeController : Controller
        public ActionResult Index(int page =1, string sort = "FirstName", string sortdir="asc", string search="")
            int pageSize = 10;
            int totalRecord = 0;
            if (page < 1) page = 1;
            int skip = (page * pageSize) - pageSize;
            var data = GetEmployees(search, sort, sortdir, skip, pageSize, out totalRecord);
            ViewBag.TotalRows = totalRecord;
            ViewBag.search = search;
            return View(data);

        public List<Employee> GetEmployees(string search, string sort, string sortdir, int skip, int pageSize, out int totalRecord)
            using (MyDatabaseEntities dc = new MyDatabaseEntities())
                var v = (from a in dc.Employees
                                    a.FirstName.Contains(search) ||
                                    a.LastName.Contains(search) ||
                                    a.EmailID.Contains(search) ||
                                    a.City.Contains(search) ||
                            select a
                totalRecord = v.Count();
                v = v.OrderBy(sort + " " + sortdir);
                if (pageSize > 0)
                    v = v.Skip(skip).Take(pageSize);
                return v.ToList();
Posted By :