2012-04-02 4 views
0

Hallo Ich benutze dieses Handbuch here und ich folge ihm. Aber ich benutze nur Suche und Paging.Suche und Paging, aber bei der Suche noch dysplay die falsche Summe der Seiten

Wenn ich nach etwas suche, zeigt es noch 16 Seiten an, aber es sollte wie 3 Seiten sein.

Hier ist der Code der Steuerung:

public ActionResult Index(int page = 1,string search = null) 
    { 
     IEnumerable<Produkter> produkt = db.Produkter.Where(p => search == null 
      || p.Kategorie.Contains(search) 
      || p.Material.Contains(search) 
      || p.Namn.Contains(search) 
      || p.Storlek.Contains(search) 
      || p.Tillbehör.Contains(search) 
      || p.Tillbehörstyp.Contains(search) 
      || p.Benämning.Contains(search) 
      || p.Färg.Contains(search)); 

     ViewBag.TotalPages = (int)Math.Ceiling((double)db.Produkter.Count()/pageSize); 
     produkt = produkt.Skip((page - 1) * pageSize).Take(pageSize).ToList(); 

     ViewBag.CurrentPage = page; 
     ViewBag.PageSize = pageSize; 

     ViewBag.Search = search; 
     return View(produkt); 

Und hier ist der Ansicht:

@model IList<Mvctest.Models.Produkter> 
@helper biuldLinks(int start, int end, string innerContent) 
{ 
    for (int i = start; i <= end; i++) 
    { 
    <a class="@(i == ViewBag.CurrentPage ? "current" : "")" href="@Url.Action("Index", "Produkter", new { Search = ViewBag.Search , page = i})">@(innerContent ?? i.ToString())</a> 
    } 
} 
@helper pageLinks() 
{ 
    exakly the same code on the giude 
} 

<div class="product-search"> 
<form action="@Url.Action("Index", "Produkter")" method="get"> 
Search <input id="search" name="search" type="text" value="@ViewBag.Search" /> 
<input type="submit" value="Search" /> 
</form> 

Page: 
@pageLinks() 

Paging arbeitet und die Suche funktioniert. Das Problem ist, wenn ich den Paging-Modus suche, zeige immer noch die Gesamtzahl der Seiten an. Wie 16 Seiten, wenn das ganze Produkt gelistet ist, aber wenn ich suche, wären es nur 3 Seiten.

Antwort

0

, wenn Sie die Zählung tun Sie nicht die gefilterten Liste

ViewBag.TotalPages = (int)Math.Ceiling((double)db.Produkter.Count()/pageSize); 

versuchen mit

ViewBag.TotalPages = (int)Math.Ceiling((double)produkt.Count/pageSize); 
+0

thx ersetzt zählen. Hi, ich habe noch eine Frage. || p.Benämning.Contains (Suche) || p.Färg.Contains (Suche) || p.price.ToString(). Enthält (search)); aber der Preis in der Datenbank ist Geldwert. aber ich konvertiere es. es heißt, dass ViewBag.TotalPages = (int) Math.Ceiling ((double) produkt.Count() ist nicht der gleiche Typ. :( – newb

+0

Sollte funktionieren. Ich habe jetzt keine VS2010 zur Hand, aber vielleicht ist mein Fehler dass du das '()' nur produkt.Count entfernen musst – Iridio

Verwandte Themen