2010-08-31 4 views
0

Привет мой код его, где я выдавая пейджинг зрения:подкачки с asp.net MVC C#

<div style="float: right;"> 
     <%= Html.RouteLink("<<", new { page = 1 }, new { title = "first page" })%> 
     <% if (this.Model.HasPreviousPage) 
      {%> 

     <%= Html.RouteLink("<", new { page = (Model.PageIndex - 1) }, new { title = "previous page"})%> 
     <%} %> 

     <% 
      for (int i = 1; i <= this.Model.PageIndex + 2; i++) 
      { if(i <= this.Model.TotalPages){ 
       %> 

     <%= Html.ActionLink(Convert.ToString(i), "Overview", new { page = i }, new { title = i + " page"})%> 
     <% }}%> 

     <% if (this.Model.HasNextPage) 
      {%> 

     <%= Html.RouteLink(">", new { page = (Model.PageIndex + 1) }, new { title = "next page"})%> 
     <%} %> 
     <%= Html.RouteLink(">>", new { page = Model.TotalPages }, new { title = "last page" })%> 
    </div> 

это выглядит следующим образом:

<< 1 2 3 > >> 

Я хочу, чтобы показать всегда только две страницы до и после выбранной страницы. Если Iam на стр. 4, я увижу все 3 страницы раньше, как это.

<< < 1 2 3 **4** > >> 

Как я могу это сделать, помогите мне, пожалуйста .. я немного на складе в моем сознании в данный момент, не имеют ни малейшего представления о том, как управлять этим.

моя модель имеет следующие данные для поискового вызова:

/// <summary> 
     /// Gets the boolean value of previous page 
     /// </summary> 
     public bool HasPreviousPage 
     { 
      get 
      { 
       return (PageIndex > 1); 
      } 
     } 

     /// <summary> 
     /// Gets the boolean value of next page 
     /// </summary> 
     public bool HasNextPage 
     { 
      get 
      { 
       return (PageIndex + 1 <= TotalPages); 
      } 
     } 

     /// <summary> 
     /// gets total pages of overview.aspx 
     /// </summary> 
     public int TotalPages 
     { 
      get 
      { 
       return _totalPages; 
      } 
      set 
      { 
       _totalPages = value; 
      } 
     } 

     /// <summary> 
     /// gets total count 
     /// </summary> 
     public int TotalCount 
     { 
      get 
      { 
       return _totalCount; 
      } 
      set 
      { 
       _totalCount = value; 
      } 
     } 

     /// <summary> 
     /// gets actual page index 
     /// </summary> 
     public int PageIndex 
     { 
      get 
      { 
       return _pageIndex; 
      } 
      set 
      { 
       _pageIndex = value; 
      } 
     } 

     /// <summary> 
     /// gets page size 
     /// </summary> 
     public int PageSize 
     { 
      get 
      { 
       return _pageSize; 
      } 
      set 
      { 
       _pageSize = value; 
      } 
     } 




PageSize = 5; 
       PageIndex = page; 
       TotalCount = Threads.Count; 
       TotalPages = TotalCount/PageSize; 

       int pageResult = 0; 
       for (int counter = 1; pageResult < this.TotalCount; counter++) 
       { 
        pageResult = counter * this.PageSize; 
        TotalPages = counter; 
       } 

       FirstThreads = new List<Thread>(); 
       FirstThreads.AddRange(Threads.Skip<Thread>((PageIndex - 1) * PageSize).Take<Thread>(PageSize)); 

ответ

1

Ну в первую очередь, на ваш взгляд является довольно сложным.

Почему бы не использовать метод расширения HTML, чтобы упростить интерфейс и пейджинг?

Существует множество примеров, мне лично нравится this.

Смежные вопросы