Layui框架实战基础(增删改查)表格表单(二)

文章介绍了如何利用layui框架结合AJAX来实现表格中数据的新增和修改功能。点击表格的‘编辑’按钮时,通过调用接口获取详情数据回显到表单,而‘删除’则直接处理。表单的回显利用了layui的form.val方法,保存操作根据是否存在编辑ID来判断是新增还是更新数据。
摘要由CSDN通过智能技术生成

这个来记录新增和修改共用一个表单 这都是最最最基础的 但是刚接触的时候从0开始写 也让我找不少文章  还是跟大家伙开发其他框架一样 写成 动态变量 什么都可以复用

 

 1. 将新增表单当做基础 修改回显都是在它基础上做的

//这是上个文章讲的 表格点击事件
        // 绑定点击事件
        table.on('tool(checkTable)', function (obj) {
            var data = obj.data;//获得当前行数据
            var layEvent = obj.event; 获得 lay-event 对应的值(也可以是表头的 event 参数对应的值)
            if (obj.event === 'updata') {
        //当点击的是修改时我这是调用接口传入该条数据的id拿到的详细数据 然后大家后台没有写这个接口的话 直接使用上面的data 直接拿整行数据也是一样 跟element ui 的scoped一样
                $.ajax({
                    type: "get",
                    url: getProjectDetail + '/' + data.id,
                    async: false,
                    headers: {
                        'dm-authorize-token': $.cookie("token"),
                    },
                    data: {
                        id: data.id,
                    },
                    success: function (e) {
                        if (e.code == 200) {
                            //这是点击添加按钮的那个方法 第一个参数是占位符来区分是添加还是删除 第二个是拿到的你点击那一行的数据
                            addBtn(true, e.data)
                        } else {
                            layer.msg(e.msg);
                        }
                    },
                    error: function (e) {
                        layer.msg(e.msg);
                    }
                });
            } else if (obj.event === 'delete') {
                deleteRepresentEvent(data)
            }
        });
//正常点击添加是不传参数的 然后我们点击编辑按钮的话传递第一个参数
 这个就是来区分是新增还是编辑
// 新增编辑
function addBtn(type, data) {
    layer.closeAll("tips");
    var title = "新增标签";
    //点击编辑的数据的id 先定义为空
    editProjectId = ''
    if (type) {
        title = "编辑标签";
        //如果为编辑的话 将回显编辑的id赋值给变量
        editProjectId = data.id
    }
//通用的弹窗用来镶嵌表单
    layer.open({
        type: 1,
        area: ["680px", "410px"],
        title: title,
        content: $("#editProjectLayer"),
        resize: false,
//点击右上角x号触发
        cancel: function () {
            cancelProjectBtn()
        },
//成功之后触发
        success: function (layero, index_0) {
//    如果点击的为编辑的话 
            if (type) {
                // 数据回显
                form.val("form", {
                    "name": data.name,
                    "remark": data.remark,
                    "type": data.type
                })
                // 颜色回显
                colorpicker.render({
                    elem: '#colorInput',
                    color: data.color,
                    done: function (color) {
                        labelColor = color
                    }
                });
            } else { 
                //后面还可以执行其他操作 (就是正常点击添加之后 要是想让哪一个输入框为固定项 不可修改的那种 在这里面设置)
            }
        },
    });
}

 在这里呢 使用form的.val方法来回显 前面的form是layui的form组件 上面要是定义的话记得设置为全局变量 不然访问不到 后面这个form 是你页面表单的lay-filter=" "值 里面字段是你输入框的 name 值!

<form class="layui-form" id="addGoodsForm" lay-filter="form">
	<div class="layui-form-item " style="width:calc(100% - 55px)">
						<label class="layui-form-label"><span class="star">*</span>标签名称:</label>
						<div class="layui-input-block">
							<input type="text" id="labelName" name="name" autocomplete="off" placeholder="请输入标签名称"
								class="layui-input nameIput" />
						</div>
					</div>
					<div class="layui-form-item " style="width:calc(100% - 55px)">
						<label class="layui-form-label" for="searchStatus"><span class="star">*</span>标签类型:</label>
						<select id="labelType" class="search-input" name="type" style="margin-left: 4px;">
							<option value="">请选择标签类型</option>
							<option value="1">优秀项目</option>
							<option value="2">十佳项目</option>
						</select>
					</div>
</form>

回显完就是最后的保存按钮功能了

// 保存
function saveProjectBtn() {
    var labelName = $("#labelName").val();
    var labelType = $("#labelType").val();
    var colorInput = labelColor;
    var remark = $("#remark").val();

    if (labelName == "" || labelName == null) {
        return layer.msg("标签名称不能为空");
    }
    if (labelType == "" || labelType == null) {
        return layer.msg("标签类型不能为空");
    }
    if (colorInput == "" || colorInput == null) {
        return layer.msg("标签颜色不能为空");
    }
    //动态变量 请求地址和msg信息
    var url = addProjectTag
    var msg = ('添加成功');
    var personTag = {
        name: labelName,
        type: labelType,
        color: colorInput,
        remark: remark,
    };
//判断是否存在编辑id 也就是手否为编辑状态 用分别不同的参数和请求接口
    if (editProjectId != "" && editProjectId != null) {
        url = updateProjectTag;
        msg = ('修改成功');
        var personTag = {
            name: labelName,
            type: labelType,
            color: colorInput,
            remark: remark,
            id: editProjectId
        };
    }
//最后就是正常发请求
    $.ajax({
        type: "post",
        url: url,
        async: false,
        headers: {
            'Content-Type': 'application/json',
            'dm-authorize-token': $.cookie("token"),
        },
        data: JSON.stringify(personTag),
        success: function (e) {
            console.log(e);
            if (e.code == 200) {
    //这是成功之后调用的方法 用来刷新表格和关闭弹框等等 一般用作取消按钮使用
                cancelProjectBtn();
                setTimeout(function () {
                    layer.msg(msg);
                }, 300)
            } else {
                layer.msg(e.msg);
            }
        },
        error: function (e) {
            layer.msg(e.msg);
        }
    });
}
// 取消
function cancelProjectBtn() {
    // 清空表单 (“addGoodsForm”是表单的id)
    $("#addGoodsForm")[0].reset();
    layui.form.render();
   
    // 清空编辑id
    editProjectId = "";
//关闭弹窗
    layer.closeAll()
//获取表格数据的方法 调用相当于刷新表格
    initCheckTable()
}

form表单元素包括:text 文本输入框,password密码输入框,checkbox复选框,radio单选框,file 文件域,submit表单提交action指向的文件,reset表单清空,image图片提交按钮,button按钮,hidden隐藏域。 select option select 实现下拉选 callback 是回调函数 layui.模块   模块可以是layui已经存在的模块,也可以通过layui.define([mods], callback) 来自己自定义模块。 如果想要使用模块首先要做的必然是加载模块,layui.use(['laypage', 'layedit'], function(){}); 接下来使用layui风格控件  其实感觉layui帮我们定义好了CSS和许多JS文本,我们需要做的只是按照layui的命名规范选好样式进而使用就可以了。  layu官方文档的命名规范为: CSS命名规范 class命名前缀:layui,连接符:-,如:class="layui-form" 命名格式一般分为两种: 一:layui-模块名-状态或类型 layui-状态或类型 因为有些类并非是某个模块所特有,他们通常会是一些公共类。如: 一(定义按钮的原始风格):class="layui-btnlayui-btn-primary" (定义内联块状元素):class="layui-inline" 1 2 3 4 5 6 7 8 9 当然还有前面提到的使用模块的js代码: layui.use(['form', 'layedit', 'laydate'], function(){   var form = layui.form   ,layer = layui.layer   ,layedit = layui.layedit   ,laydate = layui.laydate;   //日期   laydate.render({     elem: '#date'   });   laydate.render({     elem: '#date1'   });   //创建一个编辑器   var editIndex = layedit.build('LAY_demo_editor');   //自定义验证规则   form.verify({     title: function(value){       if(value.length < 5){         return '标题至少得5个字符啊';       }     }     ,pass: [/(.+){6,12}$/, '密码必须6到12位']     ,content: function(value){       layedit.sync(editIndex);     }   });   //监听指定开关   form.on('switch(switchTest)', function(data){     layer.msg('开关checked:'+ (this.checked ? 'true' : 'false'), {       offset: '6px'     });     layer.tips('温馨提示:请注意开关状态的文字可以随意定义,而不仅仅是ON|OFF', data.othis)   });   //监听提交   form.on('submit(demo1)', function(data){     layer.alert(JSON.stringify(data.field), {       title: '最终的提交信息'     })     return false;   }); }); 下面我们按照官方文档的开发规范使用一下form表单的例子       表单集合演示           单行输入框                       验证必填项                             验证手机                                   验证邮箱                                       多规则验证                                   验证日期                                   验证链接                                 验证身份证                       自定义验证                   请填写6到12位密码               范围                           -                                 单行选择框                   </opt
非常感谢您的提问!以下是一个使用MVC、layui和MySql实现一张表的增删改查的示例代码: 1. 创建数据库表 首先,我们需要在MySql中创建一个名为“users”的表,包含以下字段: id int(11) NOT NULL AUTO_INCREMENT, name varchar(255) NOT NULL, age int(11) NOT NULL, email varchar(255) NOT NULL, PRIMARY KEY (id) 2. 编写后端代码 接下来,我们可以使用Java和Spring MVC框架编写后端代码。以下是一个简单的UserController类,它包含了处理增删改查请求的方法: @Controller @RequestMapping("/user") public class UserController { @Autowired private UserService userService; @RequestMapping(value = "/list", method = RequestMethod.GET) public String list(Model model) { List<User> userList = userService.getAllUsers(); model.addAttribute("userList", userList); return "user/list"; } @RequestMapping(value = "/add", method = RequestMethod.GET) public String add(Model model) { model.addAttribute("user", new User()); return "user/add"; } @RequestMapping(value = "/add", method = RequestMethod.POST) public String add(@ModelAttribute("user") User user) { userService.addUser(user); return "redirect:/user/list"; } @RequestMapping(value = "/edit/{id}", method = RequestMethod.GET) public String edit(@PathVariable("id") int id, Model model) { User user = userService.getUserById(id); model.addAttribute("user", user); return "user/edit"; } @RequestMapping(value = "/edit/{id}", method = RequestMethod.POST) public String edit(@ModelAttribute("user") User user) { userService.updateUser(user); return "redirect:/user/list"; } @RequestMapping(value = "/delete/{id}", method = RequestMethod.GET) public String delete(@PathVariable("id") int id) { userService.deleteUser(id); return "redirect:/user/list"; } } 3. 编写前端代码 最后,我们可以使用layui框架编写前端代码。以下是一个简单的用户列表页面: <table class="layui-table"> <thead> <tr> <th>ID</th> <th>姓名</th> <th>年龄</th> <th>邮箱</th> <th>操作</th> </tr> </thead> <tbody> {{#each userList}} <tr> <td>{{this.id}}</td> <td>{{this.name}}</td> <td>{{this.age}}</td> <td>{{this.email}}</td> <td> <a href="/user/edit/{{this.id}}" class="layui-btn layui-btn-sm">编辑</a> <a href="/user/delete/{{this.id}}" class="layui-btn layui-btn-sm layui-btn-danger">删除</a> </td> </tr> {{/each}} </tbody> </table> 4. 总结 以上就是一个使用MVC、layui和MySql实现一张表的增删改查的示例代码。希望对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值