2016-12-26 1 views
1

comment puis-je ajouter une pagination personnalisée à mon application qui écrit en C# MVC5 en utilisant une base de données et Entity Framework 6 avec Bootstrap?Comment faire une pagination personnalisée dans ASP.net MVC 5 dépendent de bootstrap?

+1

est-il une question? utiliser aimablement les blogs pour publier des articles techniques. – Prasoon

+0

Bien qu'il soit recommandé sur stackoverflow de répondre à vos propres questions et de poster des questions pour lesquelles vous avez déjà une solution, vous devez écrire une question avec une description de problème que votre réponse répond, afin qu'elle puisse être trouvée par d'autres personnes. être répondu par d'autres avec peut-être une meilleure solution. N'écrivez pas (fondamentalement) "J'ai écrit du code, c'est ici". Actuellement, votre question actuelle est juste une ligne et ne serait pas considérée comme une bonne question sur le débordement de la pile. Et supprimez le "La meilleure façon de ..." de votre réponse, vous pourriez être surpris de différentes façons de résoudre votre problème. – Solarflare

+0

merci, c'est mis à jour maintenant –

Répondre

1

Ceci est mon code et son bon fonctionnement:

Remarque: ce code d'appel doit être bootstrap existe

Ajouter nouveau fichier dans les modèles nommés paging.cs:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 
using System.Web.Mvc.Ajax; 
using System.Web.Security; 

namespace project.Models 
{ 
    public class Paging 
{ 
    private projectEntities db = new projectEntities(); 

    public string Pagination(int total, int page, int Take, int offset, string Controler, string View, string Params) 
    { 
     if (total > 0) 
     { 
      string c_url = HttpContext.Current.Request.Url.AbsoluteUri.ToLower(); 
      string URL = c_url.Substring(0, c_url.IndexOf(Controler.ToLower())); 
      double rowPerPage = Take; 
      if (Convert.ToDouble(total) < Take) 
      { 
       rowPerPage = Convert.ToDouble(total); 
      } 

      int totalPage = Convert.ToInt16(Math.Ceiling(Convert.ToDouble(total)/rowPerPage)); 
      int current = page; 
      int record = offset; 
      int pageStart = Convert.ToInt16(Convert.ToDouble(current) - Convert.ToDouble(offset)); 
      int pageEnd = Convert.ToInt16(Convert.ToDouble(current) + Convert.ToDouble(offset)); 
      string numPage = ""; 
      if (totalPage < 1) return ""; 
      numPage += "<ul class='pagination'>"; 
      if (current > 1) numPage += "<li class='previous'><a href='" + URL + Controler + View + "?Page=" + (page - 1) + Params + "' aria-label='Previous'>&laquo;</a></li>"; 
      else numPage += "<li class='disabled'><a href='#' aria-label='Previous'><span aria-hidden='true'>&laquo;</span></a></li>"; 
      if (current > (offset + 1)) numPage += "<li><a href='" + URL + Controler + View + "?Page=1" + Params + "' name='page1'>1</a></li><li class='disabled spacing-dot'><a href='#'>...</a></li>"; 
      for (int i = 1; i <= totalPage; i++) 
      { 
       if (pageStart <= i && pageEnd >= i) 
       { 
        if (i == current) numPage += "<li class='active'><a href='#'>" + i + " <span class='sr-only'>(current)</span></a></li>"; 
        else numPage += "<li><a href='" + URL + Controler + View + "?Page=" + i + Params + "'>" + i + "</a></li>"; 
       } 
      } 
      if (totalPage > pageEnd) 
      { 
       record = offset; 
       numPage += "<li class='disabled spacing-dot'><a href='#'>...</a></li><li><a href='" + URL + Controler + View + "?Page=" + (totalPage) + Params + "'>" + totalPage + "</a></li>"; 
      } 
      if (current < totalPage) numPage += "<li class='next'><a class='ui-bar-d' href='" + URL + Controler + View + "?Page=" + (page + 1) + Params + "'>&raquo;</a></li>"; 
      else numPage += "<li class='disabled'><a href='#' aria-label='Previous'><span aria-hidden='true'>&raquo;</span></a></li>"; 
      numPage += "</ul>"; 
      return numPage; 
     } 
     else 
     { 
      return "no records found"; 
     } 
    } 
} 
} 

Vous peut être utilisé dans votre contrôleur comme le ci-dessous:

Paging pg = new Paging(); 
private projectEntities db = new projectEntities(); 

//ex : Controller name-> news , view_name -> browse 
public ActionResult Index() 
    { 
     int offset = 1; 
     int Page = 1; 
     int Take = 20; 
     if (Convert.ToInt32(Request.QueryString["Page"]) > 1) 
     { 
      Page = Convert.ToInt32(Request.QueryString["Page"]); 
     } 

     int skip = 0; 
     if (Page == 1) 
      skip = 0; 
     else 
      skip = ((Page - 1) * Take); 
     int total = db.Table_Name.Count(); 
     var data = db.Table_Name.Skip(skip).Take(Take); 
     string paging = pg.Pagination(total, Page, Take, offset, "news", "/browse", ""); 
     ViewBag.Paging = paging; 
     return View(data.ToList()); 
    } 

Après que vous pouvez l'appeler dans la vue comme ceci:

@model IEnumerable<project.Models.project> 
@{ 
    ViewBag.Title = "News"; 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 
<div class="container"> 

    <table class="table table-striped"> 
     <tr> 
      <th> 
       @Html.DisplayNameFor(model => model.field_name) 
      </th> 
     </tr> 

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

</table> 
@Html.Raw(ViewBag.Paging)