2011-09-13 4 views
0

ASP.NET MVCプロジェクト用のページ付きリストとページャを作成しました。それはすごくうまくいきます。ASP.NET MVC PaginatedListページャ - 特定のポイントの後に賢明な "..."を付ける

私には分かりませんが、ある点の後に...を入れる方法です。

12を次のように私は必要なもの

1234567891011121314Next >>>

は、いくつかのことです。たとえば、次のように私のポケベルのように見えると言うことができます345678910...Next >>>

...はこちら11ためです。我々はページ11に行くとき、次のように、ページャは次のようになります。

...11121314Next >>>

この実装では、私がこれを行うにはどのようにそれを把握することはできませんものです。

<div id="pager"> 

    @if (Model.PrimaryModel.HasPreviousPage) { 
     @:@Html.ActionLink(
      "<<< Previous", 
      Model.Property["action"], 
      new { 
       controller = Model.Property["controller"], 
       Area = Model.Property["area"], 
       page = (Model.PrimaryModel.PageIndex - 1) 
      }, 
      new { 
       data_jquery_ajax_url = Url.Action(
        string.Format("pagerAjaxCall_{0}", Model.Property["action"]), 
        new { 
         controller = Model.Property["controller"], 
         Area = Model.Property["area"], 
         page = (Model.PrimaryModel.PageIndex - 1) 
        } 
       ) 
      } 
     ) 
    } 

    @if (Model.PrimaryModel.TotalPages >= 2) { 

     int totalPageNumber = 0; 

     for (int i = 0; i < Model.PrimaryModel.TotalPages; i++) { 

      int value = i + 1; 

      if (Model.PrimaryModel.PageIndex == i) { 
       @:@Html.ActionLink(value.ToString(), Model.Property["action"], new { controller = Model.Property["controller"], Area = Model.Property["area"], page = (i) }, new { @class = "active-page", data_jquery_ajax_url = Url.Action(string.Format("pagerAjaxCall_{0}", Model.Property["action"]), new { controller = Model.Property["controller"], Area = Model.Property["area"], page = (i) }) }) 
      } else { 
       @:@Html.ActionLink(value.ToString(), Model.Property["action"], new { controller = Model.Property["controller"], Area = Model.Property["area"], page = (i) }, new { data_jquery_ajax_url = Url.Action(string.Format("pagerAjaxCall_{0}", Model.Property["action"]), new { controller = Model.Property["controller"], Area = Model.Property["area"], page = (i) }) }) 
      } 

      totalPageNumber++; 
     } 

     @*@:current : @(Model.PrimaryModel.PageIndex+1), totalPage @totalPageNumber.ToString(), right side @((totalPageNumber - Model.PrimaryModel.PageIndex)-1), left side @(totalPageNumber - (totalPageNumber - Model.PrimaryModel.PageIndex))*@ 
    } 

    @if (Model.PrimaryModel.HasNextPage) { 
     @:@Html.ActionLink(
      "Next >>>", 
      Model.Property["action"], 
      new { 
       controller = Model.Property["controller"], 
       Area = Model.Property["area"], 
       page = (Model.PrimaryModel.PageIndex + 1) 
      }, 
      new { 
       data_jquery_ajax_url = Url.Action(
        string.Format("pagerAjaxCall_{0}", Model.Property["action"]), 
        new { 
         controller = Model.Property["controller"], 
         Area = Model.Property["area"], 
         page = (Model.PrimaryModel.PageIndex + 1) 
        } 
       ) 
      } 
     ) 
    } 

</div> 

任意の考え:ここ

とは、私の現在のページャ・コードがどのように見えるかですか?

答えて

1

だけではあなたに解決する方法の一般的なアイデアを与える必要があり、それ

var start = Model.PrimaryModel.PageIndex > 10 ? Model.PrimaryModel.PageIndex : 0; 

if (start > 0) { //create "..." } 
for (int i = start; i <= Model.PrimaryModel.TotalPages && i < start + 10; i++) 
{ 
    //generate pages 
} 
if (start + 10 < 0 Model.PrimaryModel.TotalPages) { //create "..." } 
関連する問題