1. 程式人生 > >asp.net Mvc4 使用ajax結合分頁外掛實現無重新整理分頁

asp.net Mvc4 使用ajax結合分頁外掛實現無重新整理分頁

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

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

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

1、主檢視(用於顯示資料)程式碼

<link href="~/Content/kkpager_blue.css" rel="stylesheet" />
<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());
        }  
最後上個效果圖:




相關推薦

asp.net Mvc4 使用ajax結合外掛實現重新整理

本文為在mvc4中使用ajax實現無重新整理分頁demo,記錄一下。 解決方案思想:頁面資料的初始載入和按頁載入都是通過ajax來進行,頁面分頁連結點選後利用ajax技術傳送當前頁碼到後端控制器,後端控制器根據當前頁碼和設定的pageSize從資料庫中取出對應頁的資料。

ASP.NET+Ajax+JQuey+Json資料+儲存過程實現重新整理

<!--引入jquery-1.6.2--> <!--ShowPageData1.aspx頁面--> <script src="../Jquery/jquery-1.6.2.min.js" type="text/javascript">&l

asp.net mvc基於jQuery+Ajax實現重新整理

解決方案思想:頁面資料的初始載入和按頁載入都是通過ajax來進行,頁面分頁連結點選後利用ajax技術傳送當前頁碼到後端控制器,後端控制器根據當前頁碼和設定的pageSize從資料庫中取出對應頁的資料。後端控制器處理完後利用PartialView方法把資料返回到分部檢視中,利用

tp5+ajax+jq實現重新整理

tp5框架裡面自帶有panigate()+rende()的方法可以超簡單的實現分頁,但是就是看著一直要重新整理很不爽,所以找了網上的好多程式碼,終於找到了一個邏輯簡單的無重新整理分頁,以下是我更改適合之後實現的效果 程式碼裡面有詳細註釋了,就不多說了,說明一下分頁查詢的原

javascript專案實戰---ajax實現重新整理

<?php class Pagination { private $total; //資料表中總記錄數 private $listRows; //每頁顯示行數 private $limit; //mysql 資料庫的limit private $uri; //分頁

asp.net ajaxasp.net 2.0中的fileupload合力打造重新整理檔案上傳控制元件

{20        bool fileOK =false;21        //獲取根檔案絕對路徑22string path = Server.MapPath("~/UpLoad/");23        //如上傳了檔案,就判斷檔案格式24        FileUpload FU = FileUplo

SSH三大框架的整合+利用Ajax實現重新整理

以下是我利用Struts2.3.24、Spring4.0、Hibernate4.2 結合Mysql資料庫進行的ssh整合,實現分頁需要json.js 首先ssh的整合需要匯入所有的jar包 在web.xml <?xml version="1.0" e

ASP.NET MVC4Site.CSS

ASP.NET MVC 4 的基礎分頁的CSS樣式: body { font-family: Calibri,Georgia,"Times New Roman"; margin: 0; } DIV#header { background-color: #444; bo

Asp.Net+Jquery Ajax非同步

前段時間做的一個專案,需要實現的功能是彈出一個選擇資料的視窗,裡面的資料是可以分頁的,選擇相應的行資料填充到頁面的文字框中(將其中的分頁資料做成了Ajax 非同步取資料),下面的分頁導航按鈕是仿照 部落格園 做的,給自己做一個記錄.......

Asp.Net北大青鳥總結(四)-使用GridView實現真假

void 每次 第三方控件 ati exec open() lld ret ges 這段時間看完了asp.net視頻。可是感覺到自己的學習好像沒有鞏固好,於是又在圖書館裏借了幾本關於asp.net的書感覺真的非常好自己大概對於asp.net可以實現主要的小D

使用pagination外掛實現ajax

1.html頁面引入jq和js外掛 <script language="javascript" type="text/javascript" src="http://code.jquery.com/jquery-1.11.0.min.js"></script> <s

.Net MVC4 使用心得(三)實現控制元件

      之前寫的,很凌亂,而且,幾乎不粘程式碼,這不便於理解和也無法直接尋找可用程式碼。以後的文章會盡量引入程式碼例項。       這次需要一個翻頁控制元件。之前webform直接拖個aspnetpager,寫寫前臺樣式和後臺程式碼就好了,需要資料繫結時可以直接用pa

Bootstrap Paginator外掛+ajax 實現動態重新整理

之前做分頁想過做淘寶的那個,但是因為是後臺要求不高,就Bootstrap Paginator外掛感覺還蠻容易上手,所以就選了它。 Bootstrap Paginator分頁外掛下載地址: 1.這是需要分頁的頁面放的 js函式: <span style="font-

ASP.NET使用Ajax

錯誤信息 alt bst ror sub img request ssr onf 一、新建一個html頁面,如註冊頁面"Register.htm" <!DOCTYPE html> <html > <head> <title

ASP.NET MVC4中的App_start中BundleConfig的介紹使用

自動配置 cat als sax 初始化 .cn 多個 屬性 要點 在BundleConfig.cs中,指定CSS和JS,主要用來壓縮JS和CSS 在ASP.NET MVC4中(在WebForm中應該也有),有一個叫做Bundle的東西,它用來將js和css進行壓縮

Asp.net MVC4高級編程學習筆記-視圖學習第一課20171009

強類型 編寫 ret namespace i++ 智能 權限 eba 轉換成 首先解釋下:本文只是對Asp.net MVC4高級編程這本書學習記錄的學習筆記,書本內容感覺挺簡單的,但學習容易忘記,因此在邊看的同時邊作下了筆記,可能其它朋友看的話沒有情境和邏輯順序還請諒解

Asp.net MVC4高級編程學習筆記-視圖學習第二課Razor視圖引擎20171010

space view part scrip for span 通過 文本 電子郵件 Razor視圖引擎 1、常用寫法 @標記代碼的轉換字符。 示例: <h1>hello,it’s @users.count items.</h1> //這裏會自動識別

asp.net利用Ajax和Jquery在前臺向後臺傳參數並返回值

否則 cli for res 反序 tty 服務器 .ajax content asp.net利用Ajax和Jquery在前臺向後臺傳參數並返回值,通過aspx.cs中的靜態方法WebMethod進行處理 後臺代碼: using System.Web.Service

Asp.net MVC4高級編程學習筆記-模型學習第五課MVC表單和HTML輔助方法20171101

流量 取值 工作 sin 輔助 一個點 大量 元數據 view MVC表單和HTML輔助方法 一、表單的使用。 表單中的action與method特性。Action表示表單要提交往那裏,因此這裏就有一個URL。這個URL可以是相對或絕對地址。表單默認的method屬性值是g

Mvc多級Views目錄 asp.net mvc4 路由重寫及 修改view 的尋找視圖的規則

目錄 for .net bool action htm 命名 resource 訪問規則 一般我們在mvc開發過程中,都會碰到這樣的問題。頁面總是寫在Views文件夾下,而且還只能一個Controller的頁面只能寫在相應的以 Controller名命名的文件夾下。如果我們