LayUI实现数据的增删改查功能

页面效果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

主要使用Layui的数据表格 - layui.table

用于对表格进行一些列功能和动态化数据操作,涵盖了日常业务所涉及的几乎全部需求。支持固定表头、固定行、固定列左/列右,支持拖拽改变列宽度,支持排序,支持多级表头,支持单元格的自定义模板,支持对表格重载(比如搜索、条件筛选等),支持复选框,支持分页,支持单元格编辑等等一些列功能。

页面代码

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>院校管理 </title>
<!-- 引入layui的样式 -->
<link href="${pageContext.request.contextPath}/css/layui.css"
	rel="stylesheet" />
<script src="${pageContext.request.contextPath}/js/jquery-3.6.0.js"></script>
<!-- 引入layui的js-->
<script src="${pageContext.request.contextPath}/js/layui.js"></script>
</head>
<body>
	<div class="layui-row">
		<div class="layui-col-md12">
			<table id="demo" lay-filter="test"></table>
		</div>
	</div>
	<!-- 编辑弹框  -->
	<div class="layui-row" id="update" style="display:none;">
	    <div class="layui-col-md10" >
	        <form class="layui-form layui-from-pane" action="" lay-filter="formTest" style="margin-top:20px" >
	            <input type="hidden" name="did" id="did"/>
	            <div class="layui-form-item">
	                <label class="layui-form-label">院系名称:</label>
	                <div class="layui-input-block">
	                    <input type="text" name="dname" id="dname" required  lay-verify="required" autocomplete="off" placeholder="请输入学院名称" class="layui-input">
	                </div>
	            </div>
	            <div class="layui-form-item" style="margin-top:40px">
	                <div class="layui-input-block">
	                    <button class="layui-btn  layui-btn-submit " lay-submit="" lay-filter="save">保存</button>
	                    <button type="reset" class="layui-btn layui-btn-primary">重置</button>
	                </div>
	            </div>
	        </form>
	    </div>
	</div>
	<script type="text/html" id="reloadDemo">
		<div class="demoTable">
			院系名称:
			<div class="layui-inline">
				<input class="layui-input" name="search" id="search"
					autocomplete="off">
			</div>
			<button class="layui-btn" data-type="reload" lay-event="search">搜索</button>
			<a class="layui-btn layui-btn-normal" lay-event="add">新增</a>
		</div>
	</script>
	<script type="text/html" id="barDemo">
  		<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>
	<script>
		layui.use(['table', 'form'], function() {
			var table = layui.table,form=layui.form;
			//数据表格
			var deptTable = table.render({
				elem : '#demo',
				url : '../../department.do?method=findAll', //数据接口
				height : 'full-5',
				page : true,//开启分页
				toolbar : '#reloadDemo',//右侧工具栏
				defaultToolbar : [ 'filter', 'print', 'exports' ],//左侧工具栏
				cols : [ [ //表头
				{
					field : 'did',
					title : '院系ID',
					sort : true,
					fixed : 'left'
				}, {
					field : 'dname',
					title : '院系名称'
				}, {
					fixed : 'right',//对齐方式
					title : '操作',
					toolbar : '#barDemo',
					width : 150
				} ] ],
				id: 'testReload'
			});
			//监听行工具事件
			//注:tool 是工具条事件名,test 是 table 原始容器的属性 lay-filter="对应的值"
			table.on('tool(test)', function(obj) {
				var data = obj.data;
				if (obj.event === 'del') {//删除
					layer.confirm('确定删除吗?', function(index) {
						$.ajax({
							type:'post',
							url:'/Course-Selection/department.do?method=remove',
							data:{"id":data.did},
							dataType:'json',
							success:function(data){
								if(data.code=='ok'){
									layer.msg("删除成功",{icon:1});
									 deptTable.reload();//重新加载数据表格
								}else{
									layer.msg("删除失败",{icon: 5});
								}
							}
						})
					});
				} else if (obj.event === 'edit') {//修改
					//给表单的input赋值
					$("#did").val(data.did);
					$("#dname").val(data.dname);
					//修改弹框
					layer.open({     
                        type: 1,
                        title: "修改院系信息",
                        area: ['420px', '200px'],
                        content: $("#update")//引用的弹出层的页面层的方式加载修改界面表单
                    });
				}
			});
			//搜索(表格重载)
			var $ = layui.$, active = {
				reload : function() {
					//执行重载
					table.reload('testReload', {
						page : {
							curr : 1//重新从第 1 页开始
						},
						where : {
							search: $('#search').val()//条件
						}
					}, 'data');
				}
			};
			//监听工具事件
			table.on('toolbar(test)', function(obj){
				if (obj.event === 'search') {
					var type = $(this).data('type');
					active[type] ? active[type].call(this) : '';
				} else if (obj.event === 'add') {
					//给表单的input赋值
					$("#did").val("");
					$("#dname").val("");
					//修改弹框
					layer.open({     
                        type: 1,
                        title: "新增院系信息",
                        area: ['420px', '200px'],
                        content: $("#update")//引用的弹出层的页面层的方式加载修改界面表单
                    });
				}
				
			});
			//监听表单提交
	        //保存(修改、删除)
	        form.on('submit(save)', function(data){
	            $.ajax({
	                url: '/Course-Selection/department.do?method=save',
	                type: 'POST',
	                dataType: "json",
	                data: data.field,
	                success: function (data) {
	                    if (data.code == 200) {
	                    	layer.msg("保存成功", {icon: 1});
	                        setTimeout(function () {
	                            layer.closeAll();//关闭所有的弹出层
	                            deptTable.reload();
	                        }, 500);
	                    } else {
	                        layer.msg("操作失败!", {icon: 5});
	                    }
	                }
	            });
	            return false;
	        });
			
		});
	</script>
</body>
</html>

servlet代码:

@WebServlet(urlPatterns = "/department.do")
public class DepartmentController extends HttpServlet {
	private static final long serialVersionUID = 1L;
	private DepartmentService departmentService = new DepartmentServiceImpl();

	/**
	 * @see HttpServlet#HttpServlet()
	 */
	public DepartmentController() {
		super();
		// TODO Auto-generated constructor stub
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doPost(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// 设置字符编码
		request.setCharacterEncoding("UTF-8");
		response.setCharacterEncoding("UTF-8");
		// 获取参数
		String method = request.getParameter("method");
		if (method.equals("findAll")) {
			// 分页查询
			findAll(request, response);
		} else if (method.equals("remove")) {
			// 删除
			remove(request, response);
		}else if (method.equals("save")) {
			// 修改
			save(request, response);
		} 
	}

	/**
	 * 修改信息
	 * 
	 * @param request
	 * @param response
	 * @throws ServletException
	 * @throws IOException
	 */
	private void save(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		// 获取参数
		String id = request.getParameter("did");
		String dname = request.getParameter("dname");
		// 创建对象
		Department d = new Department();
		// 设置参数
		d.setDname(dname);
		// 调用service层的方法
		boolean flag = false;
		if(id.equals("")||id==null) {
			flag = departmentService.saveDepartment(d);
		}else {
			int did = Integer.parseInt(id);
			// 设置参数
			d.setDid(did);
			flag = departmentService.modifyToDepartment(d);
		}	
		// 解决json中文乱码
		response.setContentType("text/json;charset=UTF-8");
		response.setCharacterEncoding("UTF-8");
		PrintWriter out = response.getWriter();
		JSONObject jsonObject =new JSONObject();	
		// 判断
		if (flag == true) {
			jsonObject.put("code", 200);
		} else {
			jsonObject.put("code", "");
		}
		out.print(jsonObject);
		out.flush();
		out.close();
		

	}


	/**
	 * 删除信息
	 * 
	 * @param request
	 * @param response
	 * @throws ServletException
	 * @throws IOException
	 */
	private void remove(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		int did = Integer.parseInt(request.getParameter("id"));
		boolean flag = departmentService.delDepartment(did);
		// 解决json中文乱码
		response.setContentType("text/json;charset=UTF-8");
		response.setCharacterEncoding("UTF-8");
		PrintWriter out = response.getWriter();
		JSONObject jsonObject = new JSONObject();
		// 判断
		if (flag) {
			jsonObject.put("code", "ok");
		} else {
			jsonObject.put("code", "no");
		}
		out.print(jsonObject);
		out.flush();
		out.close();
	}

	/**
	 * 分页查询信息
	 * 
	 * @param request
	 * @param response
	 * @throws ServletException
	 * @throws IOException
	 */
	private void findAll(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// 解决json中文乱码
		response.setContentType("text/json;charset=UTF-8");
		response.setCharacterEncoding("UTF-8");
		//获取请求参数
		int currentPage = Integer.parseInt(request.getParameter("page"));
		int pageSize =Integer.parseInt( request.getParameter("limit"));
		String search=request.getParameter("search");
		if (search==null) {
			search = "";
		}
		//创建out对象
		PrintWriter out = response.getWriter();
		//调用service的查询方法
		List<Department> list = departmentService.findAllDepartment(search,currentPage,pageSize);
		//获取总行数
		int count = departmentService.getCount(search);
		//创建map
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("code", 0);
		map.put("data", list);
		map.put("count",count);
		map.put("msg", "");
		JSONObject jsonObject = JSONObject.fromObject(map);
		out.print(jsonObject);
		out.flush();
		out.close();
	}
}

欢迎大家阅读,本人见识有限,写的博客难免有错误或者疏忽的地方,还望各位指点,在此表示感激不尽。文章持续更新中…

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
对于Layui来说,构建优美的增删页面可以通过以下步骤实现: 1. 引入Layui的相关文件:在HTML页面中引入Layui的CSS和JS文件。 ```html <link rel="stylesheet" href="layui/css/layui.css"> <script src="layui/layui.js"></script> ``` 2. 创建HTML页面结构:根据需求设计页面布局,可以使用Layui提供的Grid、Form等组件进行页面布局。 ```html <div class="layui-container"> <div class="layui-row"> <div class="layui-col-md12"> <!-- 询表单 --> <form class="layui-form" lay-filter="searchForm"> <!-- 表单内容 --> </form> </div> </div> <div class="layui-row"> <div class="layui-col-md12"> <!-- 数据展示表格 --> <table class="layui-table" lay-filter="dataTable"> <!-- 表格内容 --> </table> </div> </div> </div> ``` 3. 编写JavaScript代码:使用Layui的表单、表格等组件,结合AJAX请求进行数据增删操作。 ```javascript // 初始化Layui组件 layui.use(['form', 'table'], function() { var form = layui.form; var table = layui.table; // 监听询表单提交 form.on('submit(search)', function(data) { // 发起AJAX请求,根据询条件获取数据并渲染表格 table.reload('dataTable', { where: data.field }); return false; }); // 监听表格工具栏操作 table.on('tool(dataTable)', function(obj) { var data = obj.data; if (obj.event === 'edit') { // 编辑操作 // 弹出编辑框,填充数据 // 发起AJAX请求,保存编辑后的数据 // 刷新表格 } else if (obj.event === 'delete') { // 删除操作 // 弹出确认框,确认删除 // 发起AJAX请求,删除数据 // 刷新表格 } }); // 渲染表格 table.render({ elem: '#dataTable', url: 'api/getData', // 数据接口 method: 'GET', page: true, limit: 10, cols: [[ // 表格列定义 ]] }); }); ``` 以上是一个简单的示例,根据实际需求可以进一步完善页面布局和功能实现。希望对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沐小侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值