2017-12-02 14 views
0

これは、ページ数とページあたりのレコード数が10であることを正しく示しています。ただし、ページxをクリックすると、レコードの次のページにリダイレクトされません。Pagedlistはクリックされると次のページにリダイレクトされませんか?

私は以前のプロジェクトでこのコードを使用しましたが、うまくいきます。私が逃したかもしれないものはありますか?

マイコントローラ:

public ActionResult Index(int? page) 
    { 
     try 
     { 
      int intPage = 1; 
      int intPageSize = 10; 
      int intTotalPageCount = 0; 

      List<Announcement> col_Announcement = new List<Announcement>(); 
      int intSkip = (intPage - 1) * intPageSize; 

      intTotalPageCount = db.Announcements.Count(); 

      var result = db.Announcements 
       .Take(intPageSize) 
       .ToList(); 

      foreach (var item in result) 
      { 
       Announcement objAnnouncement = new Announcement(); 
       objAnnouncement.AnnouncementDate = item.AnnouncementDate; 
       objAnnouncement.AnnouncementTitle = item.AnnouncementTitle; 
       objAnnouncement.AnnouncementBody = item.AnnouncementBody; 

       col_Announcement.Add(objAnnouncement); 
      } 

      // Set the number of pages 
      var _AnnouncementAsIPagedList = 
       new StaticPagedList<Announcement> 
       (
        col_Announcement, intPage, intPageSize, intTotalPageCount 
        ); 

      return View(_AnnouncementAsIPagedList); 
     } 
     catch (Exception ex) 
     { 
      ModelState.AddModelError(string.Empty, "Error: " + ex); 
      List<Announcement> col_Announcement = new List<Announcement>(); 

      return View(col_Announcement.ToPagedList(1, 25)); 

     } 
    } 

マイビュー:

@model PagedList.IPagedList<Test.Models.Announcement> 
@using PagedList.Mvc; 

<div class="jumbotron"> 
    <h2>Announcements</h2> 
    <table class="table"> 
     <tr> 
      <th> 
       Date Posted 
      </th> 
      <th> 
       Title 
      </th> 
      <th> 
       Body 
      </th> 

     </tr> 

     @foreach (var item in Model) 
     { 
      <tr> 
       <td> 
        @Html.DisplayFor(modelItem => item.AnnouncementDate) 
       </td> 
       <td> 
        @Html.DisplayFor(modelItem => item.AnnouncementTitle) 
       </td> 
       <td> 
        @Html.DisplayFor(modelItem => item.AnnouncementBody) 
       </td> 
      </tr> 
     } 

    </table> 
    Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber) of @Model.PageCount 
    @Html.PagedListPager(Model, page => Url.Action("Index", new {page})) 
</div> 
+0

を取る前に、いくつかのレコードをスキップする必要がスキップ*。 *最初のx-1ページをスキップします。 –

+0

最初に '.Skip()'と '.Take()'を使用して結果を最初の10個の項目に制限し、 '.Skip()'と '' Take() 'を内部的に使用する '' StaticPagedListそれは意味をなさない。そして、別の同一のコレクションを生成するためにループを使用することは、あまり意味がありません。そして、あなたはメソッドに送られる 'page'の値を使用することは決してありません - 最初の10レコードしか取得しないので、毎回同じレコードを返すようにします。 –

答えて

0

あなたは**あなたが使用する必要があり、レコードに

int intSkip = (page - 1) * intPageSize; 
var result = db.Announcements 
      .Skip(intSkip) 
      .Take(intPageSize) 
      .ToList(); 
+0

私はそれを行いましたが、 –

+0

OrderBy(x => x.AnnouncementDate)を追加すると、レコードは再び表示されますが、ページはまだ動作していません –

+0

更新された回答を確認してください。あなたはskip paheを計算中にページを使用する必要があります –

関連する問題