layui數據表格(一:基礎篇,數據展示、分頁組件、表格內嵌表單和圖片)

来源:https://www.cnblogs.com/thirteen-zxh/archive/2018/08/24/9529938.html
-Advertisement-
Play Games

表格展示神器之一:layui表格 前言:在寫後臺管理系統中使用最多的就是表格數據展示了,使用表格組件能提高大量的開發效率,目前主流的數據表格組件有bootstrap table、layui table、easyUI table等.... 博主個人比較傾向於layui,layui極簡,卻又不失飽滿的內 ...



 

表格展示神器之一:layui表格

前言:在寫後臺管理系統中使用最多的就是表格數據展示了,使用表格組件能提高大量的開發效率,目前主流的數據表格組件有bootstrap tablelayui table、easyUI table等.... 

博主個人比較傾向於layui,layui極簡,卻又不失飽滿的內在,體積輕盈,組件豐盈。使用簡單引用模塊便捷,有豐富的擴展功能。

 

layui官網:https://www.layui.com/

bootstrap datatable中文文檔:http://bootstrap-table.wenzhixin.net.cn/zh-cn/documentation/

 

 

目錄:

  一、三種渲染表格的方式

  二、在表格中添加編輯等按鈕

  三、在表格中添加 表單控制項

  四、添加圖片展示

  

   最終效果圖:

    

  點擊圖片效果

    

  

   點擊編輯

           

 

  一、三種初始化渲染方式

 我先從最簡單的初始化表格寫起,如果我直接把全部代碼帖出來,你們可能會看得頭暈

 

1,方法渲染:

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

 

 

var table = layui.table
            ,form = layui.form;
    layui.use('table', function () {  // 引入 table模塊
        table.render({
            id:"dataTable",//
            elem: '#layui_table_id',//指定表格元素
            url: '/menu/menuList.ajax',  //請求路徑
            cellMinWidth: 20 //全局定義常規單元格的最小寬度,layui 2.2.1 新增
            ,skin: 'line ' //表格風格 line (行邊框風格)row (列邊框風格)nob (無邊框風格)
           //,even: true    //隔行換色
            ,page: true  //開啟分頁
            ,limits: [10,20,50]  //每頁條數的選擇項,預設:[10,20,30,40,50,60,70,80,90]。
            ,limit: 10 //每頁預設顯示的數量
            ,method:'post'  //提交方式
           ,cols: [[
                {type:'checkbox'}, //開啟多選框
                {
                    field: 'menuId', //json對應的key
                    title: 'ID',   //列名
                    sort: true   // 預設為 false,true為開啟排序
                }
            ]]
        });
    });    
 

 java後臺返回的json數據格式

{
code: 0,
count: 8, //總行數
data: [,…], //表格數據
msg: ""
}

 2,自動渲染方法 (以下代碼由官方提供,自動渲染的方法 適合複雜行頭時使用,一般建議使用上面的方法渲染)

<table class="layui-table" lay-data="{height:315, url:'/demo/table/user/', page:true, id:'test'}" lay-filter="test">
  <thead>
    <tr>
      <th lay-data="{field:'id', width:80, sort: true}">ID</th>
      <th lay-data="{field:'username', width:80}">用戶名</th>
      <th lay-data="{field:'sex', width:80, sort: true}">性別</th>
      <th lay-data="{field:'city'}">城市</th>
      <th lay-data="{field:'sign'}">簽名</th>
      <th lay-data="{field:'experience', sort: true}">積分</th>
      <th lay-data="{field:'score', sort: true}">評分</th>
      <th lay-data="{field:'classify'}">職業</th>
      <th lay-data="{field:'wealth', sort: true}">財富</th>
    </tr>
  </thead>
</table>

 

 

  二,如何添加編輯按鈕

  

var table = layui.table
            ,form = layui.form;
    layui.use('table', function () {  // 引入 table模塊
        table.render({
            id:"dataTable",//
            elem: '#layui_table_id',//指定表格元素
            url: '/menu/menuList.ajax',  //請求路徑
            cellMinWidth: 20 //全局定義常規單元格的最小寬度,layui 2.2.1 新增
            ,skin: 'line ' //表格風格 line (行邊框風格)row (列邊框風格)nob (無邊框風格)
           //,even: true    //隔行換色
            ,page: true  //開啟分頁
            ,limits: [10,20,50]  //每頁條數的選擇項,預設:[10,20,30,40,50,60,70,80,90]。
            ,limit: 10 //每頁預設顯示的數量
            ,method:'post'  //提交方式
,done: function(res, curr, count) { //表格數據載入完後的事件
    //調用示例
    layer.photos({//點擊圖片彈出
        photos: '.layer-photos-demo'
        ,anim: 1 //0-6的選擇,指定彈出圖片動畫類型,預設隨機(請註意,3.0之前的版本用shift參數)
    });
    //如果是非同步請求數據方式,res即為你介面返回的信息。
    //如果是直接賦值的方式,res即為:{data: [], count: 99} data為當前頁數據、count為數據總長度
    console.log(res);

    //得到當前頁碼
    console.log(curr);

    //得到數據總量
    console.log(count);
}
    ,cols: [[ {type:'checkbox'}, //開啟多選框  { field: 'menuId', //json對應的key title: 'ID', //列名 sort: true // 預設為 false,true為開啟排序  },{ fixed: 'right', title: '操作', width: 215, align:'center', toolbar: '#barDemo' //綁定按鈕組 } ]] }); });
//監聽工具條
table.on('tool(dataTable)', function(obj){ //註:tool是工具條事件名,test是table原始容器的屬性 lay-filter="對應的值"
    var data = obj.data //獲得當前行數據
            ,layEvent = obj.event; //獲得 lay-event 對應的值
    if(layEvent === 'detail'){
     layui.alert(JSON.stringifr(data)) ; //將編輯的行信息轉為json字元串
        layer.msg(data.attrId);
    } else if(layEvent === 'del'){
        layer.msg('刪除'+data.menuId);
        console.log(table)
    } else if(layEvent === 'edit'){
       
    });
    }
});

 

 

<script type="text/html" id="barDemo">  // id和toolbar 屬性綁定
     <a class="layui-btn layui-btn-xs" lay-event="detail">查看</a>
     <a class="layui-btn layui-btn-xs" lay-event="edit">編輯</a>
     <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">刪除</a>
</script>

 

 

三,如何在表格中添加表單組件(以下我將推薦2種)

  

  1,使用模塊引擎的方式(這種方法比較麻煩,個人推薦第二種)

  

<!--  是否顯示 -->
<script type="text/html" id="isShow">  // 請註意 id之間的關聯
    {{#  if(d.menuDisplay === 'Y'){ }}
    <input type="checkbox" name="menuDisplay" value="{{d.menuId}}" lay-skin="switch" lay-text="顯示|隱藏" lay-filter="isShow" checked>
    {{#  } else { }}
    <input type="checkbox" name="menuDisplay" value="{{d.menuId}}" lay-skin="switch" lay-text="顯示|隱藏" lay-filter="isShow" >
    {{#  } }}
</script>

 

{   //在表格對象cols屬性中添加
    field: 'menuDisplay',  /
    title: '是否顯示',
    templet: '#isShow', //模板關聯以上定義的
    unresize: true,
    filter: "isShow",
    sort: false
}

 

 

  2,使用 函數的方法

 

{
    field: 'menuDisplay',
    title: '是否顯示',

    unresize: true,
    filter: "isShow",
    sort: false,
    templet: function (d) {
        if (d.menuDisplay == ‘Y’) {
            return` <input type = "checkbox"
            name = "menuDisplay"
            value = "`+d.menuId+`"
            lay - skin = "switch"
            lay - text = "顯示|隱藏"
            lay - filter = "isShow" > `;
        } else {
            return` <input type = "checkbox"
            name = "menuDisplay"
            value = "`+d.menuId+`"
            lay - skin = "switch"
            lay - text = "顯示|隱藏"
            lay - filter = "isShow"
            checked > `;
        }
    }
}

 

 

 

四、 展示圖片

        {
                    field: 'img',
                    title: '圖片',
                    unresize: true,
                    sort: false,
                    //style:'height:100px;',
                    templet:function (d) {
                        return `<div class="layer-photos-demo" onclick="img_click()" style="cursor:pointer;">
                                      <img layer-pid="圖片id,可以不寫"  layer-src="/images/bug-success-bg.jpg" src="/images/bug-success-bg.jpg" alt="圖片名">
                                    </div>`;
                    }
                }

 

 當表格數據載入完後再綁定屬性

 

 

 代碼以提交碼雲:https://gitee.com/gezi441/layui-table

 


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

-Advertisement-
Play Games
更多相關文章
  • 項目介紹 這是一款主射門店營銷的小程式。包括首頁、門店、營銷、個人設置、登錄、數據統計展示、營銷設置等。 本來要獨立完成整個項目,包括前後端一套的,有些意外因素,項目臨時收尾(說明:只完成了前端的部分,後端未完成)。 管理大師們說過:一個好的項目,必須有一個好的收尾,好的收尾,就一定要有好的經驗總結 ...
  • img { /*等寬縮小不變形*/ /*width: 100%;*/ /*二選一*/ /*等高縮小不變形*/ height: 100%; } ...
  • 【要點】 1. 什麼是持久連接? 2. 什麼是管線化? 【總結】 1.什麼是持久連接? (keep alive模式) HTTP1.1規定了預設保持長連接(HTTP persistent connection ,也有翻譯為持久連接);數據傳輸完成了保持TCP連接不斷開(不發RST包、不四次握手),等待 ...
  • 在我用vue編寫程式的時候,在傳值的時候,經常會遇到些問題,像今天遇到了兩個問題,在用父傳子的方法去傳值,當父組件中的要傳的數據是for迴圈出來的或者是列表的時候,你想每次運行的事件,都去傳某一行,或者某部分數據的時候,在子組件中用mounted(){},去載入並顯示在頁面上,還有就是在父傳子中,把 ...
  • 此文是我的出版書籍[《React Native 精解與實戰》](http://rn.parryqiu.com/)連載分享,此書由機械工業出版社出版,書中詳解了 React Native 框架底層原理、React Native 組件佈局、組件與 API 的介紹與代碼實戰,以及 React Native... ...
  • 【要點】 1. HTTP協議的主要特點 2. HTTP報文的組成部分 3. HTTP方法 4. POST 和 GET的區別 5. HTTP狀態碼 【總結】 HTTP協議的主要特點 主要特點:簡單快速, 靈活, 無連接(非keep-alive),無狀態 每個資源URI是固定的,想訪問某個資源 ,瀏覽器 ...
  • 深度優先遍歷:對每一個可能的分支路徑深入到不能再深入為止,而且每個結點只能訪問一次。要特別註意的是,二叉樹的深度優先遍歷比較特殊,可以細分為先序遍歷、中序遍歷、後序遍歷。 二叉樹最大深度: 如果二叉樹為空,則深度為0 如果不為空,分別求左子樹的深度和右子樹的深度,取最大的再加1。 ...
  • 為什麼監控 用(上)戶(帝)說,這個頁面怎麼這麼慢,還有沒有人管了?! 簡單而言,有三點原因: 關註性能是工程師的本性 + 本分; 頁面性能對用戶體驗而言十分關鍵。每次重構對頁面性能的提升,僅靠工程師開發設備的測試數據是沒有說服力的,需要有大量的真實數據用於驗證; 資源掛了、載入出現異常,不能總靠用 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...