Maison  >  Article  >  développement back-end  >  asp.net implémente une pagination sans actualisation via ajax

asp.net implémente une pagination sans actualisation via ajax

Y2J
Y2Joriginal
2017-05-08 09:16:241918parcourir

Cet article présente principalement comment asp.net Mvc4 utilise ajax combiné avec le plug-in de pagination pour obtenir une pagination sans actualisation. Ajax charge le contenu de la vue partielle renvoyé par le contrôleur dans la vue principale via la fonction de rappel pour l'affichage. ceux qui sont intéressés peuvent en savoir plus.

Cet article est une démonstration de l'utilisation d'ajax pour implémenter une pagination sans actualisation dans mvc4, enregistrez-la.

Idée de solution : le chargement initial des données de page et le chargement page par page sont tous deux effectués via ajax. Après avoir cliqué sur le lien de pagination de la page, la technologie ajax est utilisée pour envoyer le numéro de page actuel à. le contrôleur back-end. Le contrôleur back-end Récupère les données de la page correspondante de la base de données en fonction du numéro de page actuel et de la taille de page définie. Une fois le traitement terminé par le contrôleur principal, utilisez la méthode PartialView pour renvoyer les données à la vue partielle et utilisez ViewBag pour renvoyer le nombre total d'enregistrements et pageSize. Ajax charge le contenu de la vue partielle renvoyé par le contrôleur dans la vue principale pour l'afficher via la fonction de rappel.

Remarque : La navigation et le style de pagination spécifiques utilisent le plug-in kkpager.

1. Code de la vue principale (utilisé pour afficher les données)

<script src="~/Content/kkpager.js"></script>

<table id="result" class="posts block"></table> 
<nav id="kkpager" class="posts block pagination"></nav>
<script type="text/javascript"> 
  $(function () 
  { 
    GetArticlesData(1); 
  }); 
  function getParameter(name) {
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
    var r = window.location.search.substr(1).match(reg);
    if (r != null) return unescape(r[2]); return null;
  }
 
  function GetArticlesData(pageIndex) 
  { 
    var ajaxUrl = &#39;/TestDataDB/AjaxPaging?pageIndex=&#39; + pageIndex;
    var ajaxType = &#39;post&#39;; 
    var ajaxDataType = &#39;text&#39;; 
    var sucFun = function (data, status) 
    {
      if (data == null && status != "success") 
      { 
        alert("获取数据失败!"); 
        return false; 
      } 
      else 
      { 
        $("#result").html(data);
        //定义分页样式 
        var totalCount = parseInt(&#39;@ViewBag.TotalCount&#39;);
        var pageSize = parseInt(&#39;@ViewBag.PageSize&#39;); 
        var pageNo = getParameter(&#39;pno&#39;);//该参数为插件自带,不设置好,调用数据的时候当前页码会一直显示在第一页
        if (!pageNo) {
          pageNo = 1;
        }
        var totalPages = totalCount % pageSize == 0 ? totalCount / pageSize : (parseInt(totalCount / pageSize) + 1); 
        kkpager.generPageHtml({
          pno: pageNo,
          total: totalPages,
          totalRecords: totalCount,
          mode: &#39;click&#39;,
          click: function (n) {
            this.selectPage(n);//插件自带的方法,手动调用某一页码
            searchPage(n);
            return false;
          }
        });
      } 
    };  
    //ajax参数设置 
    var Option = 
          { 
            url: ajaxUrl, 
            type: ajaxType, 
            dataType: ajaxDataType, 
            cache: false, //设置为 false 将不会从浏览器缓存中加载请求信息。 
            async: true, //(默认: true),所有请求均为异步请求。发送同步请求,请将此选项设置为 false。同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。 
            timeout: 3600, //设置请求超时时间(毫秒)。此设置将覆盖全局设置。 
            error: function () { }, 
            success: sucFun, 
            beforeSend: function () { } 
          }; 
    $.ajax(Option); 
    return false; 
  }  
  //ajax翻页 
  function searchPage(n) 
  { 
    GetArticlesData(n); 
  } 
</script>

2. Code de la vue partielle

@model IEnumerable<Test13.Models.TestDataDB>
@{
  ViewBag.Title = "AjaxFenbuView";
}
  <tr>
    <th>
      @Html.DisplayNameFor(model => model.Uid) 
   </th>
    <th>
      @Html.DisplayNameFor(model => model.Uname)
    </th>
    <th>
      @Html.DisplayNameFor(model => model.Upwd)
    </th>
    <th>
      @Html.DisplayNameFor(model => model.Udata)
    </th>
    <th></th>
  </tr>
@foreach (Test13.Models.TestDataDB item in Model)
{
    <tr>
      <td>@item.Uid</td>
      <td>@item.Uname</td>
      <td>@item.Upwd</td>
      <td>@item.Udata</td>
      <td>
        @Html.ActionLink("编辑", "Edit", new { id=item.ID }) |
        @Html.ActionLink("查看详细", "Details", new { id=item.ID }) |
        @Html.ActionLink("删除", "Delete", new { id=item.ID })
      </td>
    </tr>
}

3. 🎜>

 private readonly int pageSize =1;
    public ActionResult AjaxFenYe()
    {
      ViewBag.PageSize = pageSize;
      ViewBag.TotalCount = db.TestDataDBS.Count();
      return View();
    }
    public ActionResult AjaxPaging(int pageIndex = 1)
    {
      var persons = (from p in db.TestDataDBS orderby p.ID descending select p).Skip((pageIndex - 1) * pageSize).Take(pageSize);
      return PartialView("AjaxFenbuView", persons.ToList());
    }
Le dernier rendu :

[Recommandations associées]

1.

Tutoriel vidéo gratuit ASP

2.

Tutoriel ASP

3.

Tutoriel vidéo de base ASP de Li Yanhui

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn