• LayUI之CRUD


    目录

    一、layui数据表格相关组件官网介绍

    二、用户管理后台

    三、用户新增

    四、用户编辑


    一、layui数据表格相关组件官网介绍

    整体页面

     ①先根据路径创建相关的界面,如下

     ②在官网上找到数据表格的代码块,再放到项目中

    1. <%@ page language="java" contentType="text/html; charset=UTF-8"
    2. pageEncoding="UTF-8"%>
    3. <%@ include file="/common/header.jsp" %>
    4. DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    5. <html>
    6. <head>
    7. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    8. <title>Insert title heretitle>
    9. head>
    10. <body>
    11. <table class="layui-hide" id="test" lay-filter="test">table>
    12. <script type="text/html" id="toolbarDemo">
    13. <div class="layui-btn-container">
    14. <button class="layui-btn layui-btn-sm" lay-event="getCheckData">获取选中行数据button>
    15. <button class="layui-btn layui-btn-sm" lay-event="getCheckLength">获取选中数目button>
    16. <button class="layui-btn layui-btn-sm" lay-event="isAll">验证是否全选button>
    17. div>
    18. script>
    19. <script type="text/html" id="barDemo">
    20. <a class="layui-btn layui-btn-xs" lay-event="edit">编辑a>
    21. <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除a>
    22. script>
    23. <script src="//res.layui.com/layui/dist/layui.js" charset="utf-8">script>
    24. <script>
    25. layui.use('table', function(){
    26. var table = layui.table;
    27. table.render({
    28. elem: '#test'
    29. ,url:'../../test/table/demo1.json.js'/*tpa=https://www.layuiweb.com/test/table/demo1.json*/
    30. ,toolbar: '#toolbarDemo' //开启头部工具栏,并为其绑定左侧模板
    31. ,defaultToolbar: ['filter', 'exports', 'print', { //自定义头部工具栏右侧图标。如无需自定义,去除该参数即可
    32. title: '提示'
    33. ,layEvent: 'LAYTABLE_TIPS'
    34. ,icon: 'layui-icon-tips'
    35. }]
    36. ,title: '用户数据表'
    37. ,cols: [[
    38. {type: 'checkbox', fixed: 'left'}
    39. ,{field:'id', title:'ID', width:80, fixed: 'left', unresize: true, sort: true}
    40. ,{field:'username', title:'用户名', width:120, edit: 'text'}
    41. ,{field:'email', title:'邮箱', width:150, edit: 'text', templet: function(res){
    42. return ''+ res.email +''
    43. }}
    44. ,{field:'sex', title:'性别', width:80, edit: 'text', sort: true}
    45. ,{field:'city', title:'城市', width:100}
    46. ,{field:'sign', title:'签名'}
    47. ,{field:'experience', title:'积分', width:80, sort: true}
    48. ,{field:'ip', title:'IP', width:120}
    49. ,{field:'logins', title:'登入次数', width:100, sort: true}
    50. ,{field:'joinTime', title:'加入时间', width:120}
    51. ,{fixed: 'right', title:'操作', toolbar: '#barDemo', width:150}
    52. ]]
    53. ,page: true
    54. });
    55. //头工具栏事件
    56. table.on('toolbar(test)', function(obj){
    57. var checkStatus = table.checkStatus(obj.config.id);
    58. switch(obj.event){
    59. case 'getCheckData':
    60. var data = checkStatus.data;
    61. layer.alert(JSON.stringify(data));
    62. break;
    63. case 'getCheckLength':
    64. var data = checkStatus.data;
    65. layer.msg('选中了:'+ data.length + ' 个');
    66. break;
    67. case 'isAll':
    68. layer.msg(checkStatus.isAll ? '全选': '未全选');
    69. break;
    70. //自定义头工具栏右侧图标 - 提示
    71. case 'LAYTABLE_TIPS':
    72. layer.alert('这是工具栏右侧自定义的一个图标按钮');
    73. break;
    74. };
    75. });
    76. //监听行工具事件
    77. table.on('tool(test)', function(obj){
    78. var data = obj.data;
    79. //console.log(obj)
    80. if(obj.event === 'del'){
    81. layer.confirm('真的删除行么', function(index){
    82. obj.del();
    83. layer.close(index);
    84. });
    85. } else if(obj.event === 'edit'){
    86. layer.prompt({
    87. formType: 2
    88. ,value: data.email
    89. }, function(value, index){
    90. obj.update({
    91. email: value
    92. });
    93. layer.close(index);
    94. });
    95. }
    96. });
    97. });
    98. script>
    99. body>
    100. html>

    初步效果:

     ③再从官网表单中找到输入框,并复制粘贴

    1. class="layui-form-item">
    2. <div class="layui-inline">
    3. <label class="layui-form-label">验证手机label>
    4. <div class="layui-input-inline">
    5. <input type="tel" name="phone" lay-verify="required|phone" autocomplete="off" class="layui-input">
    6. div>
    7. div>
    8. <div class="layui-inline">
    9. <label class="layui-form-label">验证邮箱label>
    10. <div class="layui-input-inline">
    11. <input type="text" name="email" lay-verify="email" autocomplete="off" class="layui-input">
    12. div>
    13. div>
    14. div>

    初步效果

     ④将验证邮箱那一块改为按钮

    1. class="layui-form-item">
    2. <div class="layui-inline">
    3. <label class="layui-form-label">验证手机label>
    4. <div class="layui-input-inline">
    5. <input type="tel" name="phone" lay-verify="required|phone" autocomplete="off" class="layui-input">
    6. div>
    7. div>
    8. <div class="layui-inline">
    9. <div class="layui-input-inline">
    10. <button type="submit" class="layui-btn" lay-submit="" lay-filter="demo1">立即提交button>
    11. div>
    12. div>
    13. div>

    初步效果

    ⑤将官方中弹出层的代码块复制到项目中即可,暂时不需要用到

    1. layer.open({
    2. type: 1,
    3. content: str //注意,如果str是object,那么需要字符拼接。
    4. })

    二、用户管理后台

    User实体类:

    1. package com.zking.entity;
    2. public class User {
    3. private Long id;
    4. private String name;
    5. private String loginName;
    6. private String pwd;
    7. private Long rid;
    8. public Long getId() {
    9. return id;
    10. }
    11. public void setId(Long id) {
    12. this.id = id;
    13. }
    14. public String getName() {
    15. return name;
    16. }
    17. public void setName(String name) {
    18. this.name = name;
    19. }
    20. public String getLoginName() {
    21. return loginName;
    22. }
    23. public void setLoginName(String loginName) {
    24. this.loginName = loginName;
    25. }
    26. public String getPwd() {
    27. return pwd;
    28. }
    29. public void setPwd(String pwd) {
    30. this.pwd = pwd;
    31. }
    32. public Long getRid() {
    33. return rid;
    34. }
    35. public void setRid(Long rid) {
    36. this.rid = rid;
    37. }
    38. public User() {
    39. super();
    40. // TODO Auto-generated constructor stub
    41. }
    42. @Override
    43. public String toString() {
    44. return "User [id=" + id + ", name=" + name + ", loginName=" + loginName + ", pwd=" + pwd + ", rid=" + rid + "]";
    45. }
    46. }

    ①、完成UserDao

    1. package com.zking.dao;
    2. import java.sql.SQLException;
    3. import java.util.List;
    4. import java.util.Map;
    5. import com.zking.entity.User;
    6. import com.zking.util.BaseDao;
    7. import com.zking.util.PageBean;
    8. import com.zking.util.StringUtils;
    9. public class UserDao extends BaseDao {
    10. public User login(User user) throws Exception {
    11. String sql="select * from t_oa_user where loginName = '"+user.getLoginName()+"' and pwd = '"+user.getPwd()+"'";
    12. // 根据sql查询符合条件的用户,通常只会返回一条数据
    13. List users = super.executeQuery(sql, User.class, null);
    14. return users==null||users.size()==0?null:users.get(0);
    15. // return super.executeQuery(sql, clz, pageBean);
    16. }
    17. // 查询用户信息及对应的角色,角色是通过case when得来的
    18. public List> list(User user,PageBean pageBean) throws InstantiationException, IllegalAccessException, SQLException{
    19. String sql="select *,\r\n" +
    20. "(CASE rid \r\n" +
    21. "WHEN 1 THEN '管理员' \r\n" +
    22. "WHEN 2 THEN '发起者' \r\n" +
    23. "WHEN 3 THEN '审批者' \r\n" +
    24. "WHEN 4 THEN '参与者' \r\n" +
    25. "WHEN 5 THEN '会议室管理员' \r\n" +
    26. "ELSE '其他' END \r\n" +
    27. ") roleName \r\n" +
    28. "from t_oa_user where 1 = 1";
    29. String name = user.getName();
    30. if(StringUtils.isNotBlank(name)) {
    31. sql+=" and name like '%"+name+"%'";
    32. }
    33. // 当实体类的属性完全包含数据库查询出来的列段的时候使用
    34. // super.executeQuery(sql, User.class, pageBean)
    35. // 返回List>,对应的是连表查询,单个实体类对象不完全包含查询的列段
    36. return super.executeQuery(sql, pageBean);
    37. }
    38. // 增
    39. public int add(User user) throws Exception {
    40. String sql="insert into t_oa_user(name,loginName,pwd) values(?,?,?)";
    41. return super.executeUpdate(sql, user, new String[] {"name","loginName","pwd"});
    42. }
    43. // 删
    44. public int del(User user) throws Exception {
    45. String sql="delete from t_oa_user where id=?";
    46. return super.executeUpdate(sql, user, new String[] {"id"});
    47. }
    48. // 改
    49. public int edit(User user) throws Exception {
    50. String sql = "update t_oa_user set name=?, loginName=?, pwd=? where id=?";
    51. return super.executeUpdate(sql, user, new String [] {"name","loginName","pwd","id"});
    52. }
    53. }

    再用juin进行测试---->UserDaoTest

    1. package com.zking.dao;
    2. import static org.junit.Assert.*;
    3. import java.sql.SQLException;
    4. import java.util.List;
    5. import java.util.Map;
    6. import org.junit.After;
    7. import org.junit.Before;
    8. import org.junit.Test;
    9. import com.zking.entity.User;
    10. import com.zking.util.PageBean;
    11. public class UserDaoTest {
    12. private UserDao userDao=new UserDao();
    13. @Before
    14. public void setUp() throws Exception {
    15. }
    16. @After
    17. public void tearDown() throws Exception {
    18. }
    19. @Test
    20. public void testList() {
    21. User user=new User();
    22. PageBean pageBean=new PageBean();
    23. try {
    24. List> list = userDao.list(user, pageBean);
    25. for (Map map : list) {
    26. System.out.println(map);
    27. }
    28. } catch (Exception e) {
    29. e.printStackTrace();
    30. }
    31. }
    32. @Test
    33. public void testAdd() {
    34. User user=new User();
    35. user.setName("云鹤衫");
    36. user.setLoginName("yhs");
    37. user.setPwd("1234");
    38. try {
    39. userDao.add(user);
    40. } catch (Exception e) {
    41. e.printStackTrace();
    42. }
    43. }
    44. @Test
    45. public void testDel() {
    46. User user=new User();
    47. user.setId(17L);
    48. try {
    49. userDao.del(user);
    50. } catch (Exception e) {
    51. e.printStackTrace();
    52. }
    53. }
    54. @Test
    55. public void testEdit() {
    56. User user=new User();
    57. user.setName("云鹤衫");
    58. user.setLoginName("yhs2");
    59. user.setPwd("1234567");
    60. user.setId(17L);
    61. try {
    62. userDao.edit(user);
    63. } catch (Exception e) {
    64. e.printStackTrace();
    65. }
    66. }
    67. }

     list方法结果:

    add方法结果:

     

       edit方法结果:

    del方法结果:

    将UserAction完善

    1. package com.zking.web;
    2. import java.util.HashMap;
    3. import java.util.List;
    4. import java.util.Map;
    5. import javax.servlet.http.HttpServletRequest;
    6. import javax.servlet.http.HttpServletResponse;
    7. import com.zking.dao.UserDao;
    8. import com.zking.entity.User;
    9. import com.zking.framework.ActionSupport;
    10. import com.zking.framework.ModelDriver;
    11. import com.zking.util.PageBean;
    12. import com.zking.util.R;
    13. import com.zking.util.ResponseUtil;
    14. public class UserAction extends ActionSupport implements ModelDriver{
    15. private User user=new User();
    16. private UserDao userDao=new UserDao();
    17. //写一个方法除了前台的请求
    18. /* public String login(HttpServletRequest req, HttpServletResponse resp) {
    19. Map map = new HashMap();
    20. if("zhangsan".equals(user.getUsername()) && "123456".equals(user.getPassword())) {
    21. map.put("code", 200);
    22. map.put("msg", "登录成功");
    23. }else {
    24. map.put("code", 0);
    25. map.put("msg", "用户名或密码错误");
    26. }
    27. try {
    28. ResponseUtil.writeJson(resp, map);
    29. } catch (Exception e) {
    30. // TODO Auto-generated catch block
    31. e.printStackTrace();
    32. }
    33. try {
    34. ResponseUtil.writeJson(resp, map);
    35. } catch (Exception e) {
    36. // TODO Auto-generated catch block
    37. e.printStackTrace();
    38. }
    39. return null;
    40. }*/
    41. public String login(HttpServletRequest req, HttpServletResponse resp) {
    42. try {
    43. User u=userDao.login(user);
    44. // 通过账户名密码查到了用户记录
    45. if(u!=null) {
    46. // ResponseUtil.writeJson(resp, new R()
    47. // .data("code", 200)
    48. // .data("msg", "成功"));
    49. ResponseUtil.writeJson(resp, R.ok(200, "登录成功"));
    50. req.getSession().setAttribute("user", u);
    51. }
    52. else {
    53. ResponseUtil.writeJson(resp, R.ok(0, "用户名密码错误"));
    54. }
    55. } catch (Exception e) {
    56. e.printStackTrace();
    57. try {
    58. ResponseUtil.writeJson(resp, R.ok(0, "用户名密码错误"));
    59. } catch (Exception e2) {
    60. e2.printStackTrace();
    61. }
    62. }
    63. return null;
    64. }
    65. //用户查询
    66. public String list(HttpServletRequest req, HttpServletResponse resp) {
    67. try {
    68. PageBean pageBean=new PageBean();
    69. pageBean.setRequest(req);
    70. List> users = userDao.list(user, pageBean);
    71. //注意:layui中的数据表格的格式
    72. ResponseUtil.writeJson(resp, R.ok(0 ,"用户数据查询成功",pageBean.getTotal(),user));
    73. } catch (Exception e) {
    74. e.printStackTrace();
    75. try {
    76. ResponseUtil.writeJson(resp, R.ok(0, "用户数据查询失败"));
    77. } catch (Exception e2) {
    78. e2.printStackTrace();
    79. }
    80. }
    81. return null;
    82. }
    83. //增加
    84. public String add(HttpServletRequest req, HttpServletResponse resp) {
    85. try {
    86. //rs是sql语句执行的影响行数
    87. int rs=userDao.add(user);
    88. if(rs>0) {
    89. ResponseUtil.writeJson(resp, R.ok(200, "用户数据新增成功"));
    90. }
    91. else {
    92. ResponseUtil.writeJson(resp, R.ok(0, "用户数据新增失败"));
    93. }
    94. } catch (Exception e) {
    95. e.printStackTrace();
    96. try {
    97. ResponseUtil.writeJson(resp, R.ok(0, "用户数据新增失败"));
    98. } catch (Exception e2) {
    99. e2.printStackTrace();
    100. }
    101. }
    102. return null;
    103. }
    104. //删除
    105. public String del(HttpServletRequest req, HttpServletResponse resp) {
    106. try {
    107. //rs是sql语句执行的影响行数
    108. int rs=userDao.add(user);
    109. if(rs>0) {
    110. ResponseUtil.writeJson(resp, R.ok(200, "用户数据删除成功"));
    111. }
    112. else {
    113. ResponseUtil.writeJson(resp, R.ok(0, "用户数据删除失败"));
    114. }
    115. } catch (Exception e) {
    116. e.printStackTrace();
    117. try {
    118. ResponseUtil.writeJson(resp, R.ok(0, "用户数据删除失败"));
    119. } catch (Exception e2) {
    120. e2.printStackTrace();
    121. }
    122. }
    123. return null;
    124. }
    125. //修改
    126. public String edit(HttpServletRequest req, HttpServletResponse resp) {
    127. try {
    128. //rs是sql语句执行的影响行数
    129. int rs=userDao.add(user);
    130. if(rs>0) {
    131. ResponseUtil.writeJson(resp, R.ok(200, "用户数据修改成功"));
    132. }
    133. else {
    134. ResponseUtil.writeJson(resp, R.ok(0, "用户数据修改失败"));
    135. }
    136. } catch (Exception e) {
    137. e.printStackTrace();
    138. try {
    139. ResponseUtil.writeJson(resp, R.ok(0, "用户数据修改失败"));
    140. } catch (Exception e2) {
    141. e2.printStackTrace();
    142. }
    143. }
    144. return null;
    145. }
    146. @Override
    147. public User getModel() {
    148. return user;
    149. }
    150. }

    R类:

    1. package com.zking.util;
    2. import java.util.HashMap;
    3. public class R extends HashMap{
    4. public R data(String key, Object value) {
    5. this.put(key, value);
    6. return this;
    7. }
    8. public static R ok(int code, String msg) {
    9. R r = new R();
    10. r.data("success", true).data("code", code).data("msg", msg);
    11. return r;
    12. }
    13. public static R error(int code, String msg) {
    14. R r = new R();
    15. r.data("success", false).data("code", code).data("msg", msg);
    16. return r;
    17. }
    18. public static R ok(int code, String msg,Object data) {
    19. R r = new R();
    20. r.data("success", true).data("code", code).data("msg", msg).data("data", data);
    21. return r;
    22. }
    23. public static R ok(int code, String msg, long count, Object data) {
    24. R r = new R();
    25. r.data("success", true).data("code", code).data("msg", msg).data("count", count).data("data", data);
    26. return r;
    27. }
    28. }

    三、用户新增

    主界面:

    1. <%@ page language="java" contentType="text/html; charset=UTF-8"
    2. pageEncoding="UTF-8"%>
    3. <%@include file="/common/header.jsp"%>
    4. DOCTYPE html>
    5. 用户管理
  • 查询
  •  userManage.js

    1. let layer,$,table;
    2. var row;
    3. layui.use(['jquery', 'layer', 'table'], function(){
    4. layer = layui.layer
    5. ,$ = layui.jquery
    6. ,table = layui.table;
    7. //初始化数据表格
    8. initTable();
    9. //绑定查询按钮的点击事件
    10. $('#btn_search').click(function(){
    11. query();
    12. });
    13. //绑定新增按钮的点击事件
    14. $('#btn_add').click(function(){
    15. row=null;
    16. open('新增');
    17. });
    18. });
    19. //1.初始化数据表格
    20. function initTable(){
    21. table.render({ //执行渲染
    22. elem: '#tb', //指定原始表格元素选择器(推荐id选择器)
    23. // url: 'user.action?methodName=list', //请求地址
    24. height: 340, //自定义高度
    25. loading: false, //是否显示加载条(默认 true)
    26. cols: [[ //设置表头
    27. {field: 'id', title: '用户编号', width: 120},
    28. {field: 'name', title: '用户名', width: 120},
    29. {field: 'loginName', title: '登录账号', width: 140},
    30. {field: '', title: '操作', width: 220,toolbar:'#toolbar'},
    31. ]]
    32. });
    33. }
    34. //2.点击查询
    35. function query(){
    36. // console.log($("#ctx").val());
    37. table.reload('tb', {
    38. url: $("#ctx").val()+'/user.action', //请求地址
    39. method: 'POST', //请求方式,GET或者POST
    40. loading: true, //是否显示加载条(默认 true)
    41. page: true, //是否分页
    42. where: { //设定异步数据接口的额外参数,任意设
    43. 'methodName':'list',
    44. 'name':$('#name').val()
    45. },
    46. request: { //自定义分页请求参数名
    47. pageName: 'page', //页码的参数名称,默认:page
    48. limitName: 'rows' //每页数据量的参数名,默认:limit
    49. }
    50. });
    51. }
    52. //3.对话框
    53. function open(title){
    54. layer.open({
    55. type: 2, //layer提供了5种层类型。可传入的值有:0(信息框,默认)1(页面层)2(iframe层)3(加载层)4(tips层)
    56. title:title,
    57. area: ['660px', '340px'], //宽高
    58. skin: 'layui-layer-rim', //样式类名
    59. content: $("#ctx").val()+'/jsp/system/userEdit.jsp', //书本编辑页面
    60. btn:['保存','关闭','批量新增','22'],
    61. yes: function(index, layero){
    62. //调用子页面中提供的getData方法,快速获取子页面的form表单数据
    63. // jquery find
    64. let data= $(layero).find("iframe")[0].contentWindow.getData();
    65. console.log(data);
    66. //判断title标题
    67. let methodName="add";
    68. if(title=="编辑")
    69. methodName="edit";
    70. $.post($("#ctx").val()+'/user.action?methodName='+methodName,
    71. data,function(rs){
    72. if(rs.success){
    73. //关闭对话框
    74. layer.closeAll();
    75. //调用查询方法刷新数据
    76. query();
    77. }else{
    78. layer.msg(rs.msg,function(){});
    79. }
    80. },'json');
    81. },
    82. btn2: function(index, layero){
    83. layer.closeAll();
    84. },
    85. btn3: function(index, layero){
    86. layer.msg("批量新增");
    87. return false;
    88. },
    89. btn4: function(index, layero){
    90. layer.msg("批量新增22");
    91. }
    92. });
    93. }

     新增界面:

    1. <%@ page language="java" contentType="text/html; charset=UTF-8"
    2. pageEncoding="UTF-8"%>
    3. <%@include file="/common/header.jsp"%>
    4. DOCTYPE html>
    5. 用户新增

    userEdit.js:

    1. let layer,form,$;
    2. layui.use(['layer','form','jquery'],function(){
    3. layer=layui.layer,form=layui.form,$=layui.jquery;
    4. initData();
    5. });
    6. function initData(){
    7. console.log(parent.row);
    8. if(null!=parent.row){
    9. //因为layui.each内部的逻辑问题导致的所以要先深拷贝一份然后再去val
    10. //parent.row:表格行对象
    11. // table的数据在父页面 userMange.jsp
    12. // 点击编辑按钮的时候,当前行赋值给予页面userEdit.jsp
    13. form.val('user',$.extend({}, parent.row||{}));
    14. $('#name').attr('readonly','readonly');
    15. }
    16. }
    17. function getData(){
    18. // 取user from中的值
    19. return form.val('user');
    20. }

    效果:

     

    四、用户编辑

    更改一下即可

    1. let layer,$,table;
    2. var row;
    3. layui.use(['jquery', 'layer', 'table'], function(){
    4. layer = layui.layer
    5. ,$ = layui.jquery
    6. ,table = layui.table;
    7. //初始化数据表格
    8. initTable();
    9. //绑定查询按钮的点击事件
    10. $('#btn_search').click(function(){
    11. query();
    12. });
    13. //绑定新增按钮的点击事件
    14. $('#btn_add').click(function(){
    15. row=null;
    16. open('新增');
    17. });
    18. });
    19. //1.初始化数据表格
    20. function initTable(){
    21. table.render({ //执行渲染
    22. elem: '#tb', //指定原始表格元素选择器(推荐id选择器)
    23. // url: 'user.action?methodName=list', //请求地址
    24. height: 340, //自定义高度
    25. loading: false, //是否显示加载条(默认 true)
    26. cols: [[ //设置表头
    27. {field: 'id', title: '用户编号', width: 120},
    28. {field: 'name', title: '用户名', width: 120},
    29. {field: 'loginName', title: '登录账号', width: 140},
    30. {field: '', title: '操作', width: 220,toolbar:'#toolbar'},
    31. ]]
    32. });
    33. //在页面中的中必须配置lay-filter="tb_goods"属性才能触发属性!!!
    34. table.on('tool(tb)', function (obj) {
    35. row = obj.data;
    36. if (obj.event == "edit") {
    37. open("编辑");
    38. }else if(obj.event == "del"){
    39. layer.confirm('确认删除吗?', {icon: 3, title:'提示'}, function(index){
    40. $.post($("#ctx").val()+'/user.action',{
    41. 'methodName':'del',
    42. 'id':row.id
    43. },function(rs){
    44. if(rs.success){
    45. //调用查询方法刷新数据
    46. query();
    47. }else{
    48. layer.msg(rs.msg,function(){});
    49. }
    50. },'json');
    51. layer.close(index);
    52. });
    53. }else{
    54. }
    55. });
    56. }
    57. //2.点击查询
    58. function query(){
    59. // console.log($("#ctx").val());
    60. table.reload('tb', {
    61. url: $("#ctx").val()+'/user.action', //请求地址
    62. method: 'POST', //请求方式,GET或者POST
    63. loading: true, //是否显示加载条(默认 true)
    64. page: true, //是否分页
    65. where: { //设定异步数据接口的额外参数,任意设
    66. 'methodName':'list',
    67. 'name':$('#name').val()
    68. },
    69. request: { //自定义分页请求参数名
    70. pageName: 'page', //页码的参数名称,默认:page
    71. limitName: 'rows' //每页数据量的参数名,默认:limit
    72. }
    73. });
    74. }
    75. //3.对话框
    76. function open(title){
    77. layer.open({
    78. type: 2, //layer提供了5种层类型。可传入的值有:0(信息框,默认)1(页面层)2(iframe层)3(加载层)4(tips层)
    79. title:title,
    80. area: ['660px', '340px'], //宽高
    81. skin: 'layui-layer-rim', //样式类名
    82. content: $("#ctx").val()+'/jsp/system/userEdit.jsp', //书本编辑页面
    83. btn:['保存','关闭','批量新增','22'],
    84. yes: function(index, layero){
    85. //调用子页面中提供的getData方法,快速获取子页面的form表单数据
    86. // jquery find
    87. let data= $(layero).find("iframe")[0].contentWindow.getData();
    88. console.log(data);
    89. //判断title标题
    90. let methodName="add";
    91. if(title=="编辑")
    92. methodName="edit";
    93. $.post($("#ctx").val()+'/user.action?methodName='+methodName,
    94. data,function(rs){
    95. if(rs.success){
    96. //关闭对话框
    97. layer.closeAll();
    98. //调用查询方法刷新数据
    99. query();
    100. }else{
    101. layer.msg(rs.msg,function(){});
    102. }
    103. },'json');
    104. },
    105. btn2: function(index, layero){
    106. layer.closeAll();
    107. },
    108. btn3: function(index, layero){
    109. layer.msg("批量新增");
    110. return false;
    111. },
    112. btn4: function(index, layero){
    113. layer.msg("批量新增22");
    114. }
    115. });
    116. }
    117. 修改效果:

       

      删除效果:

       

    118. 相关阅读:
      Jmeter控制RPS
      如何在视频上添加水印?建议收藏这些方法
      SpringBoot:如何优雅地进行响应数据封装、异常处理?
      手写一个PrattParser基本运算解析器2: PrattParser概述
      Python基础运算分享
      linux进程管理
      【JDK 8-集合框架进阶】6.3 foreach
      MySQL主从复制-读写分离
      CentOS7 二进制安装 zabbix_agent 5.0
      幻兽帕鲁游戏搭建(docker)
    119. 原文地址:https://blog.csdn.net/m0_62604616/article/details/125878259