1: public ActionResult GetDataCustomers(jQueryDataTableParams param)
2: {
3: //Traer registros
4: IQueryable<Customers> memberCol = db.Customers.AsQueryable();
5:
6: //Manejador de filtros
7: int totalCount = memberCol.Count();
8: IEnumerable<Customers> filteredMembers = memberCol;
9: if (!string.IsNullOrEmpty(param.sSearch))
10: {
11: filteredMembers = memberCol
12: .Where(m => m.CompanyName.Contains(param.sSearch) ||
13: m.ContactName.Contains(param.sSearch) ||
14: m.ContactTitle.Contains(param.sSearch) ||
15: m.Address.Contains(param.sSearch) ||
16: m.City.Contains(param.sSearch) ||
17: m.Region.Contains(param.sSearch) ||
18: m.PostalCode.Contains(param.sSearch) ||
19: m.Country.Contains(param.sSearch) ||
20: m.Phone.Contains(param.sSearch) ||
21: m.Fax.Contains(param.sSearch));
22: }
23: //Manejador de orden
24: var sortIdx = Convert.ToInt32(Request["iSortCol_0"]);
25: Func<Customers, string> orderingFunction =
26: (
27: m => sortIdx == 0 ? m.CompanyName :
28: sortIdx == 1 ? m.ContactName :
29: sortIdx == 2 ? m.ContactTitle :
30: sortIdx == 3 ? m.Address :
31: sortIdx == 4 ? m.City :
32: sortIdx == 5 ? m.Region :
33: sortIdx == 6 ? m.PostalCode :
34: sortIdx == 7 ? m.Country :
35: sortIdx == 8 ? m.Phone :
36: sortIdx == 9 ? m.Fax :
37: m.CustomerID
38: );
39: var sortDirection = Request["sSortDir_0"]; // asc or desc
40: if (sortDirection == "asc")
41: filteredMembers = filteredMembers.OrderBy(orderingFunction);
42: else
43: filteredMembers = filteredMembers.OrderByDescending(orderingFunction);
44: var displayedMembers = filteredMembers
45: .Skip(param.iDisplayStart)
46: .Take(param.iDisplayLength);
47:
48: //Manejardo de resultados
49: var result = from a in displayedMembers
50: select new
51: {
52: a.CompanyName,
53: a.ContactName,
54: a.ContactTitle,
55: a.Address,
56: a.City,
57: a.Region,
58: a.PostalCode,
59: a.Country,
60: a.Phone,
61: a.Fax
62:
63:
64: };
65: //Se devuelven los resultados por json
66: return Json(new
67: {
68: sEcho = param.sEcho,
69: iTotalRecords = totalCount,
70: iTotalDisplayRecords = filteredMembers.Count(),
71: aaData = result
72: },
73: JsonRequestBehavior.AllowGet);
74: }