asp.net 通過ajax實現無重新整理分頁

來源:互聯網
上載者:User
本篇文章主要介紹了 asp.net Mvc4 使用ajax結合分頁外掛程式實現無重新整理分頁,ajax通過回呼函數把控制器返回的分部視圖內容載入到主視圖中顯示,有興趣的可以瞭解一下。

本文為在mvc4中使用ajax實現無重新整理分頁demo,記錄一下。

解決方案思想:頁面資料的初始載入和按頁載入都是通過ajax來進行,頁面分頁連結點擊後利用ajax技術發送當前頁碼到後端控制器,後端控制器根據當前頁碼和設定的pageSize從資料庫中取出對應頁的資料。後端控制器處理完後利用PartialView方法把資料返回到分部視圖中,利用ViewBag來返回總記錄數和pageSize。ajax通過回呼函數把控制器返回的分部視圖內容載入到主視圖中顯示。

說明:分頁具體的分頁導航和樣式使用了kkpager外掛程式。

1、主視圖(用於顯示資料)代碼

<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 = '/TestDataDB/AjaxPaging?pageIndex=' + pageIndex;    var ajaxType = 'post';     var ajaxDataType = 'text';     var sucFun = function (data, status)     {      if (data == null && status != "success")       {         alert("擷取資料失敗!");         return false;       }       else       {         $("#result").html(data);        //定義分頁樣式         var totalCount = parseInt('@ViewBag.TotalCount');        var pageSize = parseInt('@ViewBag.PageSize');         var pageNo = getParameter('pno');//該參數為外掛程式內建,不設定好,調用資料的時候當前頁碼會一直顯示在第一頁        if (!pageNo) {          pageNo = 1;        }        var totalPages = totalCount % pageSize == 0 ? totalCount / pageSize : (parseInt(totalCount / pageSize) + 1);         kkpager.generPageHtml({          pno: pageNo,          total: totalPages,          totalRecords: totalCount,          mode: 'click',          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、分部視圖代碼

@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());    }

最後上個:

【相關推薦】

1.ASP免費視頻教程

2.ASP教程

3.李炎恢ASP基礎視頻教程

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.