Я пытаюсь заставить работать навигационные стрелки в jqGrid.MVC 3 RC2, Entity Framework 4, .NET Framework 4, jqGrid 3.8.2
Проблема в том, что я получаю записи не с 1 до 10, с 11 по 20 и так далее.Кажется, что метод .skip работает неправильно.
jqGrid вызывает ActionResult с правильными параметрами.
Может быть, у вас есть идея?float
//
// Post: /Admin/IndexGridData
// Gibt ein JSON Result mit allen Aufträgen für das jqGrid zurück
[HttpPost]
public ActionResult IndexGridData(string sidx, string sord, int page, int rows)
{
// Ermittlung der Zusatzinformationen die das Grid anzeigt (Anzahl Aufträge, momentan angezeigte Aufträge
int start = (page -1) * rows;
int summeauftraege = _db.Auftrag.Where(x => x.AuftragStatus != "storno").Count();
int totalPages = (int)Math.Ceiling((float)summeauftraege / (float)rows);
var auftraege = (from auftrag in _db.Auftrag
.Include("KT_AuftragStatus")
.Include("KT_Bearbeitungsort")
.Include("AuftragPartner")
select new
{
Titel = auftrag.Titel,
Auftrag_GUID = auftrag.Auftrag_GUID,
Bearbeitungsort = auftrag.KT_Bearbeitungsort.Text,
AuftragStatus = auftrag.KT_AuftragStatus.Text,
}).Where(x => x.AuftragStatus != "storniert").OrderBy(x => x.Titel)
.Skip(start)
.Take(rows)
.AsEnumerable().ToList();
// Sortierung des Grids anwenden
if (sidx == "Titel" && sord == "asc")
{
auftraege = auftraege.OrderBy(x => x.Titel).AsEnumerable().ToList();
}
else if (sidx == "Titel" && sord == "desc")
{
auftraege = auftraege.OrderByDescending(x => x.Titel).AsEnumerable().ToList();
}else if (sidx == "Bearbeitungsort" && sord == "asc")
{
auftraege = auftraege.OrderBy(x => x.Bearbeitungsort).AsEnumerable().ToList();
}
else if (sidx == "Bearbeitungsort" && sord == "desc")
{
auftraege = auftraege.OrderByDescending(x => x.Bearbeitungsort).AsEnumerable().ToList();
}
else if (sidx == "AuftragStatus" && sord == "asc")
{
auftraege = auftraege.OrderBy(x => x.AuftragStatus).AsEnumerable().ToList();
}
else if (sidx == "AuftragStatus" && sord == "desc")
{
auftraege = auftraege.OrderByDescending(x => x.AuftragStatus).AsEnumerable().ToList();
}
// Erstellung des JSON Objekts welches die einzelnen Aufträge enthält
var jsonauftraege = new object[auftraege.Count()];
for (int i = 0; i < auftraege.Count; i++)
{
jsonauftraege[i] = new
{
id = auftraege[i].KA_Auftrag_GUID,
cell = new[] {
"Details",
"Bearbeiten",
(auftraege[i].Titel != null) ? auftraege[i].Titel.ToString(): " ",
(auftraege[i].Bearbeitungsort != null) ? auftraege[i].Bearbeitungsort.ToString(): " ",
(auftraege[i].AuftragStatus != null) ? auftraege[i].AuftragStatus.ToString(): " ",
}
};
}
// Erstellung des JSON Results welches das Grid versteht
var result = new JsonResult();
result.Data = new { page = page, records = summeauftraege, rows = jsonauftraege, total = totalPages };
return Json(result.Data);
}