layui开关switch,用到table表格

功能:数据库中设置status,1时表示商品上架,0表示商品下架

SpringBoot,SpringMVC,MyBatis

1,表单样式如下:要额外写一个templet,通过后面的id找到所写templet

{field: 'status', title: '上下架切换',templet: "#ID-table-demo-templet-switch"},

整体如下所示:

<script>
    layui.use(['table',  'laydate'], function () {
        var table = layui.table;
​
        // 创建渲染实例
        table.render({
            elem: '#test',
            id: 'tableId',
            url: '/product/list',
            toolbar: '#toolbarDemo',
            cols: [
                [
                    {type: 'checkbox', fixed: 'left'},
                    {field: 'id', title: 'ID', sort: true, width: 100},
                    {field: 'categoryName', title: '分类'},
                    {field: 'name', title: '商品名'},
                    {field: 'subtitle', title: '子标题'},
                    {field: 'mainImage', title: '图片', templet:'#imageTemplet'},
                    {field: 'price', title: '价格'},
                    {field: 'stock', title: '库存'},
                    {field: 'status', title: '上下架切换',templet: "#ID-table-demo-templet-switch"},
                    {field: 'createTime', title: '创建时间', templet:"<div>{{d.createTime?layui.util.toDateString(d.createTime, 'yyyy-MM-dd HH:mm:ss'):'未知'}}</div>"},
                    {field: 'updateTime', title: '更新时间'},
                    {fixed: 'right', title: '操作', width: 134, minWidth: 125, toolbar: '#barDemo'}
                ]
            ],
            page: true
        });
      
​
    });
</script>

2,templet内容如下,拿到本行的status赋给name变量,本行id值赋给value变量。检测本行status=1吗,是就选中,否则就是0则不选中

<!--切换上下架-->
<script type="text/html" id="ID-table-demo-templet-switch">
    <input type="checkbox" name="{{d.status}}" value="{{d.id}}" title="上架|下架" lay-skin="switch"
           lay-filter="demo-templet-status" {{d.status == 1 ? "checked" : ""}} >
</script>

3,触发事件:拿到本行的id和当前状态,并将当前状态取反,得到1或者0,1-当前值这是个公式,自己试一试即可知道。

发送ajax请求到服务器更新状态

// 状态 - 开关操作
form.on('switch(demo-templet-status)', function(){
    var id = this.value;
    var status = 1 - (this.name);
    $.post(
      '/product/updateStatus',
        {'id':id,'status':status},
        function (result){
          console.log(result);
          if(result.code==0){
              mylayer.okMsg("更新成功");
              //重新渲染表格,不用刷新页面即可刷新数据
              table.reload('tableId');
          }else{
              mylayer.errorMsg("更新失败");
          }
        },
        'json'
    );
});

4,后端:就很正常的更新,数据都用SpringMVC拿过来自动封装,很方便。实体类entity中含有id和status即可,剩下的也可以补充

@RequestMapping("/updateStatus")
public Result updateStatus(Product product){
    System.out.println("ProductController.updateStatus");
    productService.updateStatus(product);
    return Result.ok("更新成功");
}

Service和mapper层不写了,有需要留言,本人经常在线,欢迎一起交流

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值