LayUI分頁基於ASP.NET MVC

来源:https://www.cnblogs.com/sandaman2019/archive/2019/06/21/11062399.html
-Advertisement-
Play Games

恢復內容開始 今天寫了挺久的分頁,百度了很多都沒有很好的.Net實例,今天我來更新一期關於layuiTable分頁 首先你得理解layui的官方文檔的Table分頁部分,我在這裡附上地址 https://www.layui.com/doc/modules/table.html 方便你們隨時邊看我的實 ...


---恢復內容開始---

今天寫了挺久的分頁,百度了很多都沒有很好的.Net實例,今天我來更新一期關於layuiTable分頁

首先你得理解layui的官方文檔的Table分頁部分,我在這裡附上地址 https://www.layui.com/doc/modules/table.html 方便你們隨時邊看我的實例和lay文檔

其實我寫的很簡單

首先介紹我用到的東西,使用前段模板:layui的table和layui的表單(此處不細提),開發工具:Vs2017,資料庫:Sqlserver2008,ORM:EF,框架:ASP.NET MVC,簡單的三層架構

廢話不多說,直接上代碼

首先是cshtml的頁面部分:

<div class="table">
            <table class="layui-table" id="layui_table_id" lay-filter="dataTable"></table>
        </div>

定義一個table,此處我採用的三大渲染方式的--方法渲染

js代碼:

table.render({//申明table的實例(前面的layui.use,我直接省略,如有需要請直接觀看文檔)
                id: "dataTable",//此處可以看文檔
                elem: '#layui_table_id',//指定表格元素
                url: '/Release/PxbmbDataPaging',  //請求路徑
                where: { pxid: data.value}, //擴展參數,可以傳數據到後臺
                title: '用戶數據表',
                limit: 5,//一頁能夠顯示的最大數目
                cellMinWidth: 20 //全局定義常規單元格的最小寬度,layui 2.2.1 新增    
                , page: true//允許分頁(一定要開啟這個!)
                , method: 'post'  //提交方式
                , cols: [[
                    {
                        field: 'lsh', //json對應的流水號
                        title: '流水號',   //列名
                        sort: true//是否允許排序
                    },
                    {
                        field: 'xm', //json對應的姓名
                        title: '姓名'  //列名
                    },
                    {
                        field: 'xb', //json對應的性別
                        title: '性別'   //列名
                    }
                    ,
                    {
                        field: 'gzdw', //json對應的工作單位
                        title: '工作單位'   //列名
                    }
                    ,
                    {
                        field: 'lxdh', //json對應的聯繫電話
                        title: '聯繫電話'   //列名
                    }
                ]]
            });

有的小伙伴很好奇我的where參數是什麼,首先我要告訴你,我的這個pxid是根據下拉菜單去選擇我要呈現的數據,不去細細探究,你可以忽略

現在寫好了js和html,是不是就可以了?

當然不是,你的數據呢???

為了更直觀,我直接放出我的資料庫

我這個資料庫設計很粗糙,簡單的思路就是根據pxid(培訓id)去查詢學生,可以看到我的pxid為3的學生是最多的,那我們就拿這列去實現分頁功能

現在有了資料庫和前段頁面,現在就到寫controller的時候了,可能有的小伙伴還不是很懂MVC的工作原理,這個你就得去補課了哦,但是MVC很好理解的!

controller代碼:

 /// <summary>
        /// 學員報名錶數據分頁
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        public JsonResult PxbmbDataPaging(int page, int limit, int pxid)
        {            
            List<Ts_Pxbmb> list=BLLService.GetPagesPxbmb(limit,page,pxid);//根據pxid獲得的每頁學生
            int Count = BLLService.GetPagesPxbmbCount(pxid);//根據pxid獲得的學生總數
            return Json(new {code=0,count=Count,data=list,msg="Get Data Success!"}); //為什麼要寫這種格式呢,可以去查看官方文檔去看看他的格式要求
        }

可以看到我的這個方法有了三個參數,第一個參數page是我們的頁面索引-代表了這是第一頁,第二個參數是limit就是我們每頁顯示的數據是多少,

我上面的js代碼標註了limit為5,所以當第一次用戶從下拉選擇框選擇pxid(培訓項目時)傳過來的值為1,5,pxid這個可以忽略。

可以看到,我使用了實體類列表list<Ts_Pxbmb>去獲得我的數據,現在讓我們轉到BLL(業務邏輯層去看看)我們是怎麼獲得值的。

BLL代碼:

首先是GetpagesPxbmb的這個方法的代碼:

在你理解這段代碼之前,首先你的去瞭解分頁查詢的sql語句,比如我用的就是sqlserver2008的分頁查詢用的是ROW_NUMBER() over(order by ** asc這個函數!建議你去百度瞭解一下(針對初學者瞭解分頁的原理)

public static List<Ts_Pxbmb> GetPagesPxbmb(int pageSize,int pageIndex,int pxid)
        {
            var start = pageSize * pageIndex - pageSize + 1;//根據分頁的頁面去選擇數據的開始因素
            var end = pageSize * pageIndex;//獲得分頁的最後因素
            string sql = "select * from(select ROW_NUMBER()  over(order by id asc) as num ,* from Ts_Pxbmb) pxbmb where (lsh between "+start+" and "+end+") and pxid="+pxid+"";
            DALService<Ts_Pxbmb> Pxxx = new DALService<Ts_Pxbmb>();
            List<Ts_Pxbmb> list = Pxxx.SelectModelsBysql(sql).ToList();
            return list;
        }  
提示,我的兩個方法的參數順序不是一致的哦,所以你得註意!但這並不影響你的理解
至於為什麼要這麼寫start和end?你可以想象 當我們穿過來的pageIndex(頁數)為1時,pageSize為5時,pxid為3時,start為1,end為5,那麼我執行sql語句得到的結果就是,培訓id為3的項目報名的學生的流水號從1到5(即從第一個到第五個)
在第二次傳入的時候,
pageIndex(頁數)為2時,pageSize為5時(pageSize是不變的),pxid為3時,那麼我執行sql語句得到的結果就是,培訓id為3的項目報名的學生的流水號從6到10(即從第六個到第十個)
執行後返回數據

再接下來就是GetPagesPxbmbCount的這個方法的代碼
這個代碼就是獲得當pxid(培訓項目)為某個值的時候,報名該培訓項目學生的數量為多少。
public static int GetPagesPxbmbCount(int pxid) {
            string sql = string.Format("select * from Ts_Pxbmb where pxid='"+pxid+"'");
            DALService<Ts_Pxbmb> Pxxx = new DALService<Ts_Pxbmb>();
            int value = Pxxx.SelectCount(new Ts_Pxbmb(), sql);
            return value;
        }

很容易理解,具體的DAL執行方法我就不說了,和ADO.NET一樣

得到了數據後我們就整體的過一遍吧

提前說一句,我的測試pxid為3,它一共有13名學生!

現在我們運行看看

 

可以看到我們的數據已經出來了,Layui的強大功能展現的淋漓盡致,你還有什麼理由不用他呢?
本次實例很簡單,希望某些大神可以給點關註,給點評價,菜鳥一枚,還望各位海涵,如有代碼錯誤或者其他漏點,請與我聯繫,我將會及時改正,希望與博客園的各位大佬共同進步!每天學習一點點小知識!

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 策略模式:定義了不同的演算法,分別分裝起來,讓他們可以互相替換,即使演算法變化了,也不會影響到使用演算法的用戶 首先定義一個抽象演算法類,有兩個類繼承了這個抽象類,重寫了AlgorithmInterface()方法 用一個context類來維護對抽象演算法類Strategy對象的引用(重點) 測試類1 但是從 ...
  • 在 Spring Boot 中集成 Shiro,並使用 JWT 進行介面認證。 為了統一對 Token 進行過濾,所以自定義了一個 過濾器。 期間遇到了以下幾個問題,這裡逐一進行記錄,以備日後查閱。 問題一:JwtTokenFilter 無法使用 @Autowired 因為自定義了一個 JWT To ...
  • IDEA設置取消自動顯示參數提示 最近在使用IDEA的過程中,發現方法中一直顯示形參名的提示,無法選中,也無法刪除,基於不同人的使用習慣不同,有的人不喜歡這種提示,我也在網上尋找各種解決方案,由於搜索關鍵詞不對,一直沒能解決,不過好基友及時幫助,順利解決,多謝我的大副。 取消參數提示之前,我的方法中 ...
  • 關於django中的APPEND_SLASH 它是啥? 看變數名大概能知道做什麼,就是添加斜線,用路由系統那裡。 路由文件,只寫了路由關係代碼 APPEND_SLASH這個常量預設為True,就是假如你沒有添加斜線,他會幫你添加上(總體是這樣,具體得看源碼怎麼寫的了) 執行命名行代碼啟動django ...
  • 涉及Dynamics ax 行業已經好幾年了,準備總結一些有用的處理方法供大家來參考 首先先介紹下Computed column技術,該技術是微軟在AX2012版本中提供的新技術,可以讓SQL語句在AX view中使用,這樣就可以將想要的值拼接在一條交易記錄上,這樣就可以針對數據進行批量處理,所以想 ...
  • 一、登錄功能實現: html頁面: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>主頁</title> <script src="https://cdn.bootcss.com/jquery/3.4.1/j ...
  • 轉載:https://blog.csdn.net/sinat_30474567/article/details/79712834 隨著近年來SOA(面向服務技術架構)的興起,越來越多的應用系統開始進行分散式的設計和部署。系統由原來單一的技術架構變成面向服務的多系統架構。原來在一個系統之間可以完成的業 ...
  • 一、序列封包與序列解包 把多個值賦給一個變數時,Python會自動的把多個值封裝成元組,稱為序列封包。 把一個序列(列表、元組、字元串等)直接賦給多個變數,此時會把序列中的各個元素依次賦值給每個變數,但是元素的個數需要和變數個數相同,這稱為序列解包。 什麼叫做序列?序列可以理解為可以進行切片、相加相 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...