使用jquery datatable进行服务器端处理,具有分页,过滤和搜索function

我需要为我的asp.net mvc(C#)应用程序使用jquery数据表服务器端处理( http://datatables.net )。

我的应用程序有数千条记录在表格中显示为列表。 我正在使用jquery数据表来启用分页,过滤和搜索。

是否有任何关于jquery数据服务器端处理的好参考/文章与asp.net mvc(C#)一起使用?

https://github.com/johannes-brunner/DataTables-ASP.NET-MVC

这是一个示例项目,您可以下载它并通过调试了解DataTables如何与.NET MVC一起使用。 它帮助我找到了主题。

您好,此链接可能对您有所帮助…

http://www.dotnetawesome.com/2015/11/jquery-datatable-server-side-pagination-sorting.html

这里有关于ASP.NET MVC中jQuery Datatable服务器端分页和排序的文章,在asp.net mvc(C#)中逐步解释为服务器dside我将参考这篇文章[jQuery Datatable服务器端分页和ASP.NET MVC中的排序

用于设置jQuery Datables的jQuery代码

 

ASP.NET C#代码(MVC)

 [HttpPost] public ActionResult LoadData() { var draw = Request.Form.GetValues("draw").FirstOrDefault(); var start = Request.Form.GetValues("start").FirstOrDefault(); var length = Request.Form.GetValues("length").FirstOrDefault(); //Find Order Column var sortColumn = Request.Form.GetValues("columns[" + Request.Form.GetValues("order[0][column]").FirstOrDefault() + "][name]").FirstOrDefault(); var sortColumnDir = Request.Form.GetValues("order[0][dir]").FirstOrDefault(); int pageSize = length != null? Convert.ToInt32(length) : 0; int skip = start != null ? Convert.ToInt32(start) : 0; int recordsTotal = 0; using (MyDatatableEntities dc = new MyDatatableEntities()) { var v = (from a in dc.Customers select a); //SORT if (!(string.IsNullOrEmpty(sortColumn) && string.IsNullOrEmpty(sortColumnDir))) { v = v.OrderBy(sortColumn + " " + sortColumnDir); } recordsTotal = v.Count(); var data = v.Skip(skip).Take(pageSize).ToList(); return Json(new { draw = draw, recordsFiltered = recordsTotal, recordsTotal = recordsTotal, data = data }, JsonRequestBehavior.AllowGet); } } 

请遵循此代码非常简单

  

这是控制器方法

 public JsonResult GetAllUsers() { JsonResult result = new JsonResult(); try { // Initialization. string search = Request.Form.GetValues("search[value]")[0]; string draw = Request.Form.GetValues("draw")[0]; string order = Request.Form.GetValues("order[0][column]")[0]; string orderDir = Request.Form.GetValues("order[0][dir]")[0]; int startRec = Convert.ToInt32(Request.Form.GetValues("start")[0]); int pageSize = Convert.ToInt32(Request.Form.GetValues("length")[0]); // Loading. List data = _userReps.AllUsers().ToList(); // Total record count. int totalRecords = data.Count; // Verification. if (!string.IsNullOrEmpty(search) && !string.IsNullOrWhiteSpace(search)) { // Apply search data = data.Where(p => p.FirstName.ToString().ToLower().Contains(search.ToLower()) || p.LastName.ToLower().Contains(search.ToLower()) || p.EmailID.ToString().ToLower().Contains(search.ToLower()) || p.UserRole.UserRoleName.ToLower().Contains(search.ToLower()) || p.UserStatus.Name.ToLower().Contains(search.ToLower()) ).ToList(); } // Sorting. if (!(string.IsNullOrEmpty(order) && string.IsNullOrEmpty(orderDir))) { data = data.OrderBy(order + " " + orderDir).ToList(); } int recFilter = data.Count; data = data.Skip(startRec).Take(pageSize).ToList(); var modifiedData = data.Select(d => new { UserID= d.UserID, Name= d.FirstName + " "+ d.LastName, Email= d.EmailID, Status= d.UserStatus.Name, UserRole= d.UserRole.UserRoleName } ); // Loading drop down lists. result = this.Json(new { draw = Convert.ToInt32(draw), recordsTotal = totalRecords, recordsFiltered = recFilter, data = modifiedData }, JsonRequestBehavior.AllowGet); } catch (Exception ex) { // Info Console.Write(ex); } // Return info. return result; } 

我建议使用ALMMa DataTables