2016-11-26 4 views
0

ich alles ist in Ordnung, außer der Schnellsuche Eingabe nicht filtringDatatable Schnellsuche funktioniert nicht auf Server-Seite

mein Code

$('.DT').each(function() 
{ 
    oTable = $(this).DataTable({ 
     "sPaginationType": "bootstrap", 
     "processing": true, 
     "serverSide": true, 
     "orderMulti": true, 
     "sDom": "<'row separator bottom'<'col-md-5'T><'col-md-3'l><'col-md-4'f>r>t<'row'<'col-md-6'i><'col-md-6'p>>",      
     "sScrollY": "500px", 
     "sScrollX": "100%", 
     "sScrollXInner": "100%", 
     "bScrollCollapse": true,      
     "ajax": { 
      "url": '/Level/LoadData', 
      "type": "POST" 
     }, 
     "columns": [ 
      { "data": "level_description", "name": "level_description", "autoWidth": true }, //index 1 
      { "data": "monthly_amount", "name": "monthly_amount", "autoWidth": true }, //index 1 
      { "data": "transport_amount", "name": "transport_amount", "autoWidth": true } 
     ] 
    });    
} 

meinen Controller

eine Datentabelle mit json in meinem Projekt zu füllen versuchen,
public ActionResult LoadData() 
     { 
      //jQuery DataTables Param 
      var draw = Request.Form.GetValues("draw").FirstOrDefault(); 

      //Find paging info 
      var start = Request.Form.GetValues("start").FirstOrDefault(); 
      var length = Request.Form.GetValues("length").FirstOrDefault(); 

      //Find order columns info 
      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.ToInt16(start) : 0; 
      int recordsTotal = 0; 

      var v = (from l in db.level select l); 

      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); 
     } 

ich denke nicht, dass, wenn ich Server-Seite die schnellen serch verwenden werden nicht funktionieren ich weiß nicht, ob ich etwas verpaßt

enter image description here

Antwort

1
you have missed the search parameter 

string search = Request.Form.GetValues("search[value]").FirstOrDefault(); 
     v = v.Where(p =>p.level_description.ToString().ToLower().Contains(search.ToLower()) || 
         p.monthly_amount.ToLower().Contains(search.ToLower()) || 
         p.transport_amount.ToString().ToLower().Contains(search.ToLower()); 

    var data = v.Skip(skip).Take(pageSize).ToList(); 

    return Json(new { draw = draw, recordsFiltered = recordsTotal, recordsTotal = recordsTotal, data = data }, JsonRequestBehavior.AllowGet); 
+0

gibt es eine andere Lösung, weil ich viele Tabellen und fo jeder von ihnen Ich habe viele Felder –

+0

Sie eine Linq-Abfrage schreiben und Nutzung verbindet die Daten aus vielen Tabellen –

+0

var zu bekommen v = (von l in db.level wähle l); \t Sie können eine Linq-Abfrage schreiben und Joins verwenden, um die Daten aus vielen Tabellen zu erhalten, wie Sie oben für eine einzelne Tabelle –

Verwandte Themen