Layui上传文件以及数据表格-程序员宅基地

技术标签: ViewUI  java  前端  javascript  

layui对于一些前端小白来说,例如我,真的非常的好用,不用去花很多很多的心思在前端美化中,并且提高了很大的工作效率。所以建议一些觉得自己前端技术不是很强,但是想让前端美化一点的可以使用layui。

layui有开发文档,不用自己去刻意去记一些语法,用的多了,自然就记住了。开发文档链接:https://www.layui.com/doc/

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;
                        }

                    }

                }

这样就可以确定哪个是选中的了。完美的解决问题。

以上就是所有的问题咯。

有什么错误请指出,请多多指教,谢谢各位!

转载于:https://www.cnblogs.com/Ivan-Wu/p/9561318.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30684743/article/details/98247918

智能推荐

Ftp命令格式(rfc 959)_ftp-rfc 命令-程序员宅基地

文章浏览阅读2.9k次。http://aijiekj.blog.163.com/blog/static/129866789201142511128695/ 本节主要讨论命令格式。命令对大小写不敏感。命令通常由命令码和相应的参数组成。中间由一个或几个空格分开。参数域由结束,服务器在未接收到行结束符时不会采取任何动作。下面描述的格式是以 NVT-ASCII 以准的,方括号代表可选的参数域,如果未选择可选的参数域则采用_ftp-rfc 命令

GPT2 throw error Using pad_token, but it is not set yet_using pad_token, but it is not set yet.-程序员宅基地

文章浏览阅读4.6k次。今天使用GPT2遇到的ERROR,看了一下源码,问题在这:pytorch_transformers.tokenization_utilsclass PreTrainedTokenizer(object):......@property def pad_token(self): """ Padding token (string). Log an error if used while not having been set. """ if self._pad_using pad_token, but it is not set yet.

今天,我28岁了_28岁有自我意识-程序员宅基地

文章浏览阅读3.9k次,点赞53次,收藏29次。曾经有幻想过28岁会是什么样子?拥有热爱的事业,理想的爱人,一日既往的亲朋好友。我回回头,还好,他们都在!但是,他们也曾丢失,或者差点丢失。_28岁有自我意识

人脸比对(1:N)_1:n人脸检索 学术-程序员宅基地

文章浏览阅读2.9w次,点赞12次,收藏81次。第1章 前言设计出人脸1:N,随着N的增大准确率降低最小的解决方案具有很强的现实意义。人脸1:N的框架大致分为:人脸检测、人脸对齐、人脸映射与人脸识别LOSS的设计,结构如下图所示:图1:人脸1:N的主要框架人脸1:N在学术界有着广泛的研究,对于人脸检测与人脸对齐(MTCNN、TCDCN等)在业界已经有较好的效果,目前的主要性能提升有:DeepFace、DeepID,框架为CNN ..._1:n人脸检索 学术

Struts 2 概要说明_struts 2 starter是什么-程序员宅基地

文章浏览阅读8.6k次。概要也 许每一本关于技术的书都应该有一个叫做HelloWorld的示例,应为这非常直观的表现了技术的特性。这本书也不特殊,在这一节中主要涉及一些 Strut 2 的基本特性的说明,包括,如何下载建立开发工程,一个Hello World JSP表示页面,使用标签,建立Action类,选择结果类型,校验输入数据,本地化输出。最后会给出一个包含上述特性的示例:用户登录需要了解的技术 Jav_struts 2 starter是什么

在一个无向图中找环_无向图找环算法-程序员宅基地

文章浏览阅读4.8k次,点赞3次,收藏13次。在一个无向图中找环PART1:DFSApproach:从每个未访问的节点运行 DFS。深度优先遍历可用于检测图中的循环。连通图的 DFS 生成一棵树。仅当图中存在回边Back Edge:从一个顶点指向其祖先顶点的边时,图中才存在环。回边Back Edge是将节点连接到自身(自循环)或其在 DFS 生成的树中的祖先之一的边。要找到其任何祖先的回边Back Edge,保留一个访问过的数组,如果任何访问过的节点都有回边Back Edge,则存在一个循环并返回 true。Algorithm:使用给定_无向图找环算法

随便推点

hibernater多方LIST做分页的处理_hibernate如何对list进行分页-程序员宅基地

文章浏览阅读758次。多方的LIST做分页,HIBERNATE有专门的函数对LIST进行分页的。还可以进行排序session.createFilter(userInfo.getLeaveWords1(),"order by xx").setFirstResult(10).setMaxResult(50).list();具体这个createFilter的参数有何作用,请参考API。_hibernate如何对list进行分页

ie8的乱码和样式问题_ie8样式不加载,右键更改编码格式后样式加载,但中文乱码-程序员宅基地

文章浏览阅读1.2k次。ie8下乱码,于是发现少了一句:加上后发现样式发生了改变,几经尝试之后发现:以前只写从来没注意过doctype简单的来说就是要页面按照html的规范来解析代码_ie8样式不加载,右键更改编码格式后样式加载,但中文乱码

DirectFB-1.5.0移植,支持3D硬件支持_directfb-examples-1.5.2.tar-程序员宅基地

文章浏览阅读2.2k次。一. DirectFB简介 DirectFB是一个轻量级的提供硬件图形加速,输入设备处理和抽象的图形库,它集成了支持半透明的视窗系统以及在LinuxFramebuffer驱动之上的多层显示。它是一个用软件封装当前硬件无法支持的图形算法来完成硬件加速的层_directfb-examples-1.5.2.tar

坚持自主可控,长安链ChainMaker全面拥抱国密的技术实践_支持国密算法的区块链技术-程序员宅基地

文章浏览阅读6.6k次。密码技术作为与核技术、航天技术并列的国家三大安全核心技术之一,在保障信息安全,增强我国行业信息系统的“安全可控”等方面具有关键作用。长期以来国际上较为通用的商用算法是由美国安全局发布的国际算法,包括DES对称加密、AES对称加密、RSA非对称加密、SHA1以及SHA256等算法。自2012年,国家密码管理局陆续公布了SM2/SM3/SM4等密码算法标准及其应用规范,以摆脱对国外技术和产品的过度依赖,建设行业网络安全环境。国家有关机关和监管机构站在国家安全的高度提出了推动国密算法应用实施的要求,并要求率先在金_支持国密算法的区块链技术

gdb调试_#0 0x00007ffff41ce387 in raise () from /usr/lib64/-程序员宅基地

文章浏览阅读468次。Ubuntu gdb 调试 过程 jin@ubuntu:~/jin/gdb$ gdb -vGNU gdb (Ubuntu/Linaro 7.4-2012.02-0ubuntu2) 7.4-2012.02Copyright (C) 2012 Free Software Foundation, Inc.License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>This is free soft_#0 0x00007ffff41ce387 in raise () from /usr/lib64/libc.so.6 #1 0x00007ffff41

基于OpenCV的PHP图像人脸识别技术_opencv php 人脸识别-程序员宅基地

文章浏览阅读1.4w次。本文所介绍的技术不是原创,而是从一个叫Robert Eisele的德国人那里学习来的。他写了一个PHP扩展openCV,只封装了两个函数,叫face_detect和face_count。 openCV是一个开源的用C/C++开发的计算机图形图像库,非常强大,研究资料很齐全。本文重点是介绍如何使用php来调用其中的局部的功能。人脸侦查技术只是openCV一个应用分支。OpenCV安装之前必须依赖_opencv php 人脸识别

推荐文章

热门文章

相关标签