2009-09-16 3 views

답변

6

내가 헬프 데스크 티켓팅 시스템을 구축하고 (나는 종류의 C#을 초보자입니다 - NerdDinner에서 많은 포인터를 가지고)와 I가 호출 라이브러리의 일종을 사용하고자하는 보기와 함께 도와주세요. MvcContrib.Pagination을 발견하고이를보기 위해 작동하도록했습니다. 그것은 내 습관이므로 MvcContrib.Grid를 사용하지 않습니다.

내보기의 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> 

내 컨트롤러 (일부) 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); 
} 

내가 반환 저장소 패턴을 사용하고 있습니다 결과는 IQueryable입니다.

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

모든이 일부 사소한 수 있지만, 나 같은 사람은 C# 및 ASP.NET MVC 및 페이징을 배우려고 노력하는 경우, 다음이 유용 할 수 있습니다 : 여기에 TicketRepository.cs의 일부 파일입니다 . 내가에서 발견 된 NerdDinner 튜토리얼을 수행하는 초보자 추천 :

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

:

+0

작품의 벌금을 내게 ... :) – DucDigital

+5

당신은) AsPagination 전에 ToList()을 (호출하지 않아야합니다. ToList()는 쿼리의 모든 항목 목록을 작성하므로 나중에 페이지의 하위 집합 만 표시하더라도 저장소에서 모든 항목을 가져옵니다. – dmnd

관련 문제