2013-09-21 3 views
0

Я пытаюсь создать пользовательский пейджинг для списка.Asp.net MVC4: Пользовательский подкачка

Что want-

-I есть контроллер, который возвращает только 10 строки из базы данных с помощью LINQ запроса с Take() методом. -При просмотре представления он показывает 10 строк. Следующее, что мне интересно, это пейджинг.

В то время как для страниц задано 10 строк, и если оно превышает 10; Я пытаюсь показать кнопку списка для next, Previous 10 записей из базы данных.

Я попытался отображения его в этом ПУТЬ

Контроллер

public ViewResult _SeeAllLedger(LedgerModel user) { 
      List<LedgerModel> ledger = null; 

      if (ModelState.IsValid) { 
       ledger = (from u in db.LedgerTables 
          select new LedgerModel { 
           AccID = u.AccID, 
           AccountHead = u.AccountHead, 
           Place = u.Place, 
           SerialNo = Convert.ToInt32(u.SerialNumber) 
          }).ToList(); 

      } 

      return View(ledger.Take(10)); //Returning 10 records 
     } 

Просмотр-

@foreach (var item in Model) { 

     <tr class="ladger-details"> 
      <td> 
       @Html.DisplayFor(modelItem => item.AccID) 
      </td> 
      <td> 
       <a href="@Html.DisplayFor(modelItem => item.AccountHead)">@Html.DisplayFor(modelItem => item.AccountHead)</a> 
      </td> 
      <td> 
       @Html.DisplayFor(modelItem => item.Place) 
      </td> 
        </tr> 
     if (Model.Count > 10) { 
      <a class="btn btn-success">Next</a> //Trying to show custom button only if this state is true 
     } 
    } 

Как я ожидал, что он не работает, что бы другие способ сопоставления строк из запроса LINQ?

ответ

1

Я думаю, что вам не хватает многих частей, чтобы сделать эту работу правильно. В основном, вы всегда принимаете те же 10 записей. Это должно помочь вам в правильном направлении.

Вы должны (по крайней мере) знать номер страницы и размер страницы (10 в вашем случае). Если вы хотите, чтобы он был более полезным, столбец сортировки и направление сортировки также помогли бы.

ledger = (from u in db.LedgerTables 
    select new LedgerModel { 
     AccID = u.AccID, 
     AccountHead = u.AccountHead, 
     Place = u.Place, 
     SerialNo = Convert.ToInt32(u.SerialNumber) 
    }).Skip(pageNum * pageSize).Take(pageSize).ToList(); 

Я использую ViewBag для отслеживания текущей страницы, размер страницы и общее количество записей, чтобы перебрать и строить ссылки на все страницы.

+0

Как? Как получить текущую страницу? Он показывал ошибку при использовании '.Skip()' – Manoj

+0

Это переменные, которые вы должны создавать и отслеживать самостоятельно. – MikeSmithDev

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