2009-09-16 10 views

Répondre

6

Je construis un système Help Desk Ticketing (Je suis un peu un débutant C# - a obtenu de nombreux pointeurs de NerdDinner) et je souhaite utiliser une sorte de bibliothèque de pagination aider avec la vue. J'ai trouvé MvcContrib.Pagination et je l'ai eu pour travailler pour une vue. Ma vue n'utilise pas MvcContrib.Grid car elle est personnalisée.

version réduite de mon avis List.aspx:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<MyProject.Areas.HelpDesk.Models.hd_Ticket>>" %> 
<%@ Import Namespace="MyProject.Areas.HelpDesk.Controllers" %> 
<%@ Import Namespace="MvcContrib.Pagination" %> 

<h2>Help Desk Tickets (showing <%= Model.Count() %> of <%= ViewData["totalItems"] %>)</h2>  

<% foreach (var item in Model) { %> 
    <h3><%= Html.Encode(item.Subject)%></h3> 
<% } %> 

<p><%= Html.Pager((IPagination)Model)%></p> 

Mon contrôleur (partie) TicketController.cs:

TicketRepository ticketRepository = new TicketRepository(); 

public ActionResult List(int? page, int? pageSize) 
{ 
    IPagination<hd_Ticket> tickets = null; 

    int dPageSize = 50; 
    int totalItems; 

    tickets = ticketRepository.GetTickets().ToList().AsPagination(page ?? 1, pageSize ?? dPageSize); 
    ViewData["totalItems"] = tickets.TotalItems; 

    return View("List", tickets); 
} 

J'utilise le modèle référentiel qui est de retour les résultats comme IQueryable. Voici une partie des TicketRepository.cs fichier:

public class TicketRepository 
{ 
    private HelpDeskDataContext db = new HelpDeskDataContext(); 

    public IQueryable<hd_Ticket> FindAllTickets() 
    { 
     return from ticket in db.hd_Tickets 
       orderby ticket.CreatedDate descending 
       select ticket; 
    } 
} 

Tout cela est peut-être trivial pour certains, mais si quelqu'un comme moi essaie d'apprendre C# et ASP.NET MVC et la pagination, cela peut être utile . Je recommande les débutants de faire le tutoriel NerdDinner à l'adresse:

http://nerddinnerbook.s3.amazonaws.com/Intro.htm

:)

+0

fonctionne bien pour moi ... :) – DucDigital

+5

Vous ne devriez pas appeler ToList() avant AsPagination(). ToList() génère une liste de tous les éléments de votre requête, de sorte que vous récupérez tout ce qui se trouve dans le référentiel même si, plus tard, vous n'en affichez qu'un sous-ensemble sur la page. – dmnd

Questions connexes