ホームページ ウェブフロントエンド ライユイのチュートリアル データテーブルとページングを実装する Layui の方法

データテーブルとページングを実装する Layui の方法

Jun 11, 2020 pm 05:25 PM
layui

データテーブルとページングを実装する Layui の方法

1. フロントエンド部分

html は、ID を持つ div を置くだけでよく、これは js がレンダリング領域を取得するのに便利です

<div id="data_grid" lay-filter="demo" ></div>  
ログイン後にコピー

js 部分は注意が必要です。 URL は非同期データ インターフェイスです。フォームをレンダリングした後のコールバック関数が完了します。

table.render({
            elem: &#39;#data_grid&#39;
            //,width: 900
            //,height: 274
            ,cols: [[ //标题栏
                {field: &#39;id&#39;, title: &#39;ID&#39;, width: 80, sort: true}
                ,{field: &#39;username&#39;, title:&#39;用户名&#39;,width: 100} //空列
                ,{field: &#39;password&#39;, title: &#39;密码&#39;, width: 120}
                ,{field: &#39;gender&#39;, title: &#39;性别&#39;, width: 150}
                ,{field: &#39;nichen&#39;, title: &#39;昵称&#39;, width: 150}
                ,{field: &#39;birthday&#39;, title: &#39;出生年月&#39;, width: 120}
                ,{fixed: &#39;right&#39;, width: 215,align:&#39;center&#39;, toolbar: &#39;#barDemo&#39;}
            ]]
            ,url:url
            ,skin: &#39;row&#39; //表格风格
            ,even: true
            ,page: true //是否显示分页
            ,limits: [3,5,10]
            ,limit: 5 //每页默认显示的数量
            ,done:function(res){
                userPage.data = res.data;
            }
            //,loading: false //请求数据时,是否显示loading
        }); 
ログイン後にコピー

条件に従ってクエリを実行します。テーブルは非同期で更新されます。添付パラメータは

です。
$(&#39;#sub_query_form&#39;).on(&#39;click&#39;,function () {
        var queryPo = page.formToJson($(&#39;#query_form&#39;).serialize());
        var table = layui.table;
        table.reload(&#39;data_grid&#39;, {
            url: &#39;/getUserList.action&#39;,
            page:{
                curr:1  //从第一页开始
            },

            method:&#39;post&#39;,
            where:{
                queryStr:queryPo
            },
            done:function (res) {
                userPage.data = res.data;
            }
        });
    }); 
ログイン後にコピー

Convert x-www-form-urlencoded json 文字列

formToJson:function (data) {
        data=data.replace(/&/g,"\",\"");
        data=data.replace(/=/g,"\":\"");
        data="{\""+data+"\"}";
        return data;
    }
ログイン後にコピー

を使用 テーブル ツールバー 1. まず、HTML

<script type="text/html" id="barDemo">
        <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="add">增加</a>
        <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>

        <!-- 这里同样支持 laytpl 语法,如: -->
        {{#  if(d.auth > 2){ }}
        <a class="layui-btn layui-btn-xs" lay-event="check">审核</a>
        {{#  } }}
</script>
ログイン後にコピー

2 でボタンを定義します。 js

layui.use(&#39;table&#39;, function(){
    var table = layui.table;
    userPage.tab(&#39;/getUserList.action&#39;);
    //监听工具条
    table.on(&#39;tool(demo)&#39;, function(obj){
        var data = obj.data;
        userPage.data = obj.data;
        if(obj.event === &#39;detail&#39;){
            layer.msg(&#39;ID:&#39;+ data.id + &#39; 的查看操作&#39;);
        }
        else if(obj.event === &#39;del&#39;){
            layer.confirm(&#39;真的要删除这条记录么&#39;,{icon: 3, title:&#39;确定删除&#39;}, function(index){
                obj.del();
                $.post(&#39;/doDelete.action?id=&#39;+data.id,function (res) {
                    userPage.reload(res);
                });
                layer.close(index);
            });

        }
        else if(obj.event === &#39;add&#39;){
           layer.open({
               title:&#39;增加窗口&#39;,
               content:userPage.template,
               yes:function () {
                   var user = page.formToJson($(&#39;#layer_form&#39;).serialize());
                   var data = &#39;user=&#39;+user;
                  $.post(&#39;/doAdd.action&#39;,data,function (res) {
                      userPage.reload(res);
                  });
                  layer.closeAll();
               }
           })

        }
        else if(obj.event === &#39;edit&#39;){
            layer.open({
                title:&#39;编辑窗口&#39;,
                content:userPage.template,
                success:function () {
                    $(&#39;input[name="id"]&#39;).val(userPage.data.id);
                    $(&#39;input[name="username"]&#39;).val(userPage.data.username);
                    $(&#39;input[name="password"]&#39;).val(userPage.data.password);
                    $(&#39;input[name="gender"]&#39;).val(userPage.data.gender);
                    $(&#39;input[name="nichen"]&#39;).val(userPage.data.nichen);
                    $(&#39;input[name="birthday"]&#39;).val(userPage.data.birthday);
                },
                yes: function(){
                    var mgUser = page.formToJson($(&#39;#layer_form&#39;).serialize());
                    var data = &#39;user=&#39;+mgUser;
                    $.post(&#39;/doEdit.action&#39;,data,function (res) {
                        userPage.reload(res);
                    });
                    layer.closeAll();
                }
            })
        }
    });
});
ログイン後にコピー

2 .サーバー部分

コントローラー層は、次のパラメータ、ページ、制限、およびクエリされる条件を受け取る必要があります。戻り値は、次のデフォルトの戻り値に基づいています。 layui ドキュメント

 @RequestMapping("/getUserList")
    @ResponseBody
    public PageList<MgUser> getUserList(@RequestParam(required = false,defaultValue = "1") int page,@RequestParam(required = false,defaultValue = "5") int limit,@RequestParam(required = false) String queryStr){
        QueryPo queryPo = null;
        if (!StringUtils.isEmpty(queryStr)){   //性别类型转换
             queryPo = JSONObject.parseObject(queryStr,QueryPo.class);
            if ("1".equals(queryPo.getGender())){
                queryPo.setGender("男");
            }
            if ("2".equals(queryPo.getGender())){
                queryPo.setGender("女");
            }

        }
        PageList pageList = new PageList();
        try {
            if (!StringUtils.isEmpty(queryPo)){ //中文字转码
                if(!StringUtils.isEmpty(queryPo.getKeywords())){
                    queryPo.setKeywords(URLDecoder.decode(queryPo.getKeywords(),"utf-8"));
                }
            }
            List<MgUser> userList = userService.getUserList(page,limit,queryPo);   //根据条件查询分页数据

            pageList.setCode("0");
            pageList.setMsg("ok");
            pageList.setData(userList);
            int count = userService.countUserByExample(queryPo);
            pageList.setCount(count);

        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
            pageList.setCode("-1");
            pageList.setMsg("数据获取异常");
            return pageList;
        }

        return pageList;
    } 
ログイン後にコピー

サービス層のクエリとページング

public List<MgUser> getUserList(int page , int limit, QueryPo queryPo) {
        MgUserExample userExample = new MgUserExample();
        MgUserExample.Criteria criteria = userExample.createCriteria();
        if(!StringUtils.isEmpty(queryPo)){
            if (!StringUtils.isEmpty(queryPo.getGender())){
                criteria.andGenderEqualTo(queryPo.getGender());
            }
            if (!StringUtils.isEmpty(queryPo.getKeywords())){
                criteria.andUsernameLike("%"+queryPo.getKeywords()+"%");
            }
        }

        userExample.setStart((page-1)*limit);
        userExample.setLimit(limit);

        List<MgUser> mgUsers = userMapper.selectByExample(userExample);

        return mgUsers;
    } 
ログイン後にコピー

mybatis リバース エンジニアリングによって生成されたサンプルには制限とページがないため、自分で追加する必要があることに注意してください

    private int start;
    private int limit;
    
    public int getStart() {
        return start;
    }

    public void setStart(int start) {
        this.start = start;
    }

    public int getLimit() {
        return limit;
    }

    public void setLimit(int limit) {
        this.limit = limit;
    }
ログイン後にコピー

次に、Mybatis の mapper.xml を変更し、ページング条件を追加します。

<select id="selectByExample" resultMap="BaseResultMap" parameterType="com.wang.entity.MgUserExample" >
    select
    <if test="distinct" >
      distinct
    </if>
    <include refid="Base_Column_List" />
    from mg_user

    <if test="_parameter != null" >
      <include refid="Example_Where_Clause" />
    </if>
    <if test="orderByClause != null" >
      order by ${orderByClause}
    </if>
    <if test="start !=0 or limit!=0">
      limit #{start},#{limit}
    </if>
  </select>
ログイン後にコピー

この記事は、https://www.cnblogs.com/wangxiayun/p/9145638.html

# から転載しています。 ##詳細については

layuiPHP中国語ウェブサイトにご注意くださいlayuiチュートリアルコラム

以上がデータテーブルとページングを実装する Layui の方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Lauiuiログインページでジャンプを設定する方法 Lauiuiログインページでジャンプを設定する方法 Apr 04, 2024 am 03:12 AM

Layui ログインページジャンプ設定手順: ジャンプコードの追加: ログインフォーム送信ボタンクリックイベントに判定を追加し、ログイン成功後、window.location.href 経由で指定ページにジャンプします。フォーム構成を変更します。lay-filter="login" のフォーム要素に非表示の入力フィールドを追加します。名前は「redirect」、値はターゲット ページ アドレスです。

Lauiuiでフォームデータを取得する方法 Lauiuiでフォームデータを取得する方法 Apr 04, 2024 am 03:39 AM

layui は、フォームのすべてのフィールド データを直接取得する、単一のフォーム要素の値を取得する、formAPI.getVal() メソッドを使用して指定されたフィールド値を取得する、フォーム データをシリアル化するなど、フォーム データを取得するためのさまざまなメソッドを提供します。これを AJAX リクエスト パラメータとして使用し、フォーム送信イベントをリッスンしてデータを取得します。

Lauiui が自己適応を実現する方法 Lauiui が自己適応を実現する方法 Apr 26, 2024 am 03:00 AM

アダプティブ レイアウトは、layui フレームワークのレスポンシブ レイアウト機能を使用して実現できます。手順には以下が含まれます:layui フレームワークを参照する。アダプティブ レイアウト コンテナを定義し、layui-container クラスを設定します。レスポンシブ ブレークポイント (xs/sm/md/lg) を使用して、特定のブレークポイントの下にある要素を非表示にします。グリッド システム (layui-col-) を使用して要素の幅を指定します。オフセット (layui-offset-) によって間隔を作成します。応答性の高いユーティリティ (layui-invisible/show/block/inline) を使用して、要素の可視性とその表示方法を制御します。

lauiとvueの違いは何ですか? lauiとvueの違いは何ですか? Apr 04, 2024 am 03:54 AM

Lauiui と Vue の違いは主に機能と懸念事項に反映されます。 Layui は UI 要素の迅速な開発に重点を置き、ページ構築を簡素化するプレハブ コンポーネントを提供します。Vue は、データ バインディング、コンポーネント開発、および状態管理に重点を置いたフルスタック フレームワークで、複雑なアプリケーションの構築により適しています。 Layui は学習が簡単で、ページをすばやく作成するのに適しています。Vue は学習曲線が急ですが、スケーラブルで保守が簡単なアプリケーションの構築に役立ちます。プロジェクトのニーズと開発者のスキル レベルに応じて、適切なフレームワークを選択できます。

Lauiuiでデータを転送する方法 Lauiuiでデータを転送する方法 Apr 26, 2024 am 03:39 AM

layui を使用してデータを送信する方法は次のとおりです。 Ajax を使用する: リクエスト オブジェクトを作成し、リクエスト パラメーター (URL、メソッド、データ) を設定し、レスポンスを処理します。組み込みメソッドを使用する: $.post、$.get、$.postJSON、$.getJSON などの組み込みメソッドを使用してデータ転送を簡素化します。

laui とはどういう意味ですか? laui とはどういう意味ですか? Apr 04, 2024 am 04:33 AM

layui は、開発者が最新の応答性の高いインタラクティブな Web アプリケーションを迅速に構築できるように、豊富な UI コンポーネント、ツール、機能を提供するフロントエンド UI フレームワークです。その機能には、柔軟で軽量、モジュール式の設計、豊富なコンポーネント、強力なツール、簡単な機能が含まれます。カスタマイズ。管理システム、電子商取引プラットフォーム、コンテンツ管理システム、ソーシャル ネットワーク、モバイル アプリケーションなど、さまざまな Web アプリケーションの開発に広く使用されています。

Lauiui フレームワークは何語ですか? Lauiui フレームワークは何語ですか? Apr 04, 2024 am 04:39 AM

layui フレームワークは、開発者が応答性の高い Web アプリケーションを迅速に構築できるようにする、使いやすい UI コンポーネントとツールのセットを提供する JavaScript ベースのフロントエンド フレームワークです。その機能には、モジュール式、軽量、応答性が高く、完全なドキュメントとコミュニティ サポートが含まれます。 layui は、管理バックエンド システム、電子商取引 Web サイト、モバイル アプリケーションの開発で広く使用されています。利点は迅速な起動、効率の向上、メンテナンスの容易さですが、欠点はカスタマイズの貧弱さと技術の更新の遅さです。

Lauiui フレームワークと Vue フレームワークの違い Lauiui フレームワークと Vue フレームワークの違い Apr 26, 2024 am 01:27 AM

layui と vue はフロントエンド フレームワークであり、layui は UI コンポーネントとツールを提供する軽量ライブラリであり、vue は UI コンポーネント、状態管理、データ バインディング、ルーティングなどの機能を提供する包括的なフレームワークです。 layui はモジュール型アーキテクチャに基づいており、vue はコンポーネント化されたアーキテクチャに基づいています。 lauiui には小規模なエコシステムがあり、vue には大規模でアクティブなエコシステムがあります。 Lauiui の学習曲線は低く、vue の学習曲線は急です。 Layui は小規模なプロジェクトや UI コンポーネントの迅速な開発に適しており、vue は大規模なプロジェクトや豊富な機能を必要とするシナリオに適しています。

See all articles