侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

layui上传文件与数据表格的一些问题

前端  /  管理员 发布于 5年前   478

layui是一款我比较喜欢的框架,它的界面风格和颜色搭配都是让人比较舒服的,所以我非常喜欢使用layui。

接下来就是在工作中使用layui遇到了一些比较细节的问题:

第一:layui上传文件的问题,

第二:layui 表格的问题。

首先第一个问题,就是layui上传文件的问题,首先我们来看layui是如何上传文件的:

function UpdateFile() {        layui.use('upload', function () {            var upload = layui.upload;            //执行实例            var uploadInst = upload.render({                elem: '#upload' //绑定元素                , url: '/ExcelTemplate'//上传接口                , method: 'POST'                , type: "file"                , accept: 'file'                , before: function (obj) {                    layer.load(); //上传loading                }                , done: function (res) {                    //上传完毕回调                    if (res) {                        layer.closeAll('loading');                        var d = dialog({                            title: '提示',                            content: '上传模板成功',                            width: 200,                            ok: function () { self.location.reload(); },                        });                        d.show();                    } else {                        layer.closeAll('loading');                        var d = dialog({                            title: '提示',                            content: '上传模板失败',                            width: 200,                            ok: function () { },                        });                        d.show();                    }                }                , error: function () {                    layer.closeAll('loading');                }            });        });    }

当然你需要在你的页面上定义一个按钮,然后触发点击事件,elem: '#upload' 就是用来与你的上传按钮做绑定了,接下来就是文件类型还有用post来传输。

然后我们需要在后台用一个参数去接收文件。

[HttpPost("")]        public IActionResult UploadTemplate(IFormFile file)        {            long dateTime = DateTime.Now.ToFileTimeUtc();            string[] template = file.FileName.Split(new char[] { '\\' }, StringSplitOptions.RemoveEmptyEntries);            string fileName = Path.Combine(hostingEnvironment.WebRootPath, "Upload", "ExcelTemplate", dateTime + "_" + template[template.Length - 1]);            if (System.IO.File.Exists(fileName))            {                System.IO.File.Delete(fileName);            }            try            {                using (FileStream fs = new FileStream(fileName, FileMode.Create))                {                    file.CopyTo(fs);                    fs.Flush();                    return Ok(true);                }            }            catch (Exception)            {                return BadRequest("上传模板失败!");            }        }

这里是用IFormFile 去接收文件,参数名最好是file,然后对文件进行操作,那么上传的文件要怎么才能下载呢,如下:

<script type="text/html" id="down">    <a href="~/Upload/ExcelTemplate/{{d.name}}" download="{{d.name}}" class="layui-table-link">下载</a></script>

在表格中显示和下载。

第二就是表格的问题了:

layui.use(['table', 'laypage'], function () {            var laypage = layui.laypage;            var table = layui.table,                form = layui.form;            table.render({                elem: '#PaymentDayList'                , url: '/PaymentDay'                , method: "get"                , height: "auto"                , width: "auto"                , cellMinWidth: 80                , limit: 10                , curr: 1                , request: {                    pageName: 'pageIndex'                }                , page: {                    layout: ['limit', 'count', 'prev', 'page', 'next', 'skip'] //自定义分页布局                    , groups: 5 //只显示 1 个连续页码                    , first: false //不显示首页                    , last: false //不显示尾页                }                , limits: [10, 20, 50, 100, 500, 1000]                , cols: [[                    { type: "checkbox", fixed: "left" },                    { type: 'numbers', title: '序号' },                    { field: 'name', title: '账期名称', sort: true, width: 200 },                    { field: 'settleMentInterval', title: '结算周期', sort: true, width: 100 },                    { field: 'startTime', title: '账期起始时间', sort: true, width: 150 },                    { field: 'endTime', title: '账期终止时间', sort: true, width: 150 },                    { field: 'warnDay', title: '到期提醒日', sort: true, width: 150 },                    { field: 'userName', title: '商保专员', sort: false, width: 100 },                    { field: 'addTime', title: '创建时间', sort: true, width: 200 },                    { field: 'isEnabled', title: '启用', templet: '#checkboxTpl', width: 100 },                    { field: 'status', title: '状态', sort: false, width: 100 },                    { field: 'scope', title: '适用范围', sort: false, width: 100 },                ]]            });            $('#Select').on('click', function () {                table.reload("PaymentDayList", {                    page: {                        curr: 1                    }                    , where: {                        name: $("#name").val(),                        startTime: $("#startTime").val(),                        endTime: $("#endTime").val(),                        status: $("#type option:selected").val()                    }                });            });            form.on('checkbox(lockDemo)', function (obj) {                var isEnable;                obj.elem.checked == true ? isEnable = "启用" : isEnable = "未启用";                $.ajax({                    url: '/PaymentDay/Enabled/' + obj.value + "/" + isEnable,                    type: 'get',                    success: function (result) {                        if (result.code == 200) {                        }                        else {                            var d = dialog({                                title: '提示',                                content: '操作失败!',                                ok: function () { },                            });                            d.show();                        }                    }                });            });        });

这时候有人可能留意到了有一个启用的checkbox,其中点击checkbox会发送get请求到控制器。从而完成与后台的交互。那么如果我们想要点击了checkbox按钮之后,我们选中这一条数据的时候不能删除这条数据怎么办呢?

我们就需要遍历一下这个页面的所有checkbox了,如下:

var table = layui.table;            var checkStatus = table.checkStatus('PaymentDayList'), data = checkStatus.data;            if (data.length == 1) {                var check = document.getElementsByName("lock");                for (i = 0; i < check.length; i++) {                    if (check[i].value == data[0].id) {                        if (check[i].checked) {                            var d = dialog({                                title: '提示',                                content: "启用了的账期不能修改",                                okValue: '确定',                                ok: function () {                                }                            }).width(200);                            d.show();                            return;                        }                    }                }

这样就可以确定哪个是选中的了。

更多layui知识请关注layui使用教程栏目。

以上就是layui上传文件与数据表格的一些问题的详细内容,更多请关注其它相关文章!


  • 上一条:
    layui后台框架的搭建详解
    下一条:
    layui-layer独立组件-弹出层介绍
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 使用 Alpine.js 排序插件对元素进行排序(0个评论)
    • 在js中使用jszip + file-saver实现批量下载OSS文件功能示例(0个评论)
    • 在vue中实现父页面按钮显示子组件中的el-dialog效果(0个评论)
    • 使用mock-server实现模拟接口对接流程步骤(0个评论)
    • vue项目打包程序实现把项目打包成一个exe可执行程序(0个评论)
    • 近期文章
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2017-06
    • 2017-07
    • 2017-08
    • 2017-09
    • 2017-10
    • 2017-11
    • 2018-03
    • 2018-04
    • 2018-05
    • 2018-06
    • 2018-09
    • 2018-11
    • 2018-12
    • 2019-02
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2021-04
    • 2021-05
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-09
    • 2023-10
    • 2023-11
    • 2023-12
    • 2024-01
    • 2024-02
    • 2024-03
    • 2024-04
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客