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
asdasd adad j@g.com asdad asdasd
asdasd adad j@g.com asdad asdasd
asdasdjhgh adad j@g.com asdad asdasd
dasdas asdasd asdasdas@dasdas.com asddasd asdsadas
Mervin Leonor adad j@g.com asdad asdasd
OOOOOOOOOOOOOOOOOOO adad j@g.com asdad asdasd
sdasd asdas fsdfsdfs@gmail.com thagssgs india
test test teste@fdasfdsaf.com ss ss
test asdfdf asdfasdf@gmail.com asdfsdf asdfsdf
vay be vay lan vay@sss.com sads deme boyle seyler
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
                            where
                                    a.FirstName.Contains(search) ||
                                    a.LastName.Contains(search) ||
                                    a.EmailID.Contains(search) ||
                                    a.City.Contains(search) ||
                                    a.Country.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 :