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: ,
ok: function () { self.location.reload(); },
});
d.show();
} else {
layer.closeAll('loading');
var d = dialog({
title: '提示',
content: '上传模板失败',
width: ,
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 - ]);
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上传文件以及数据表格的更多相关文章

  1. WebAPI通过multipart/form-data方式同时上传文件以及数据(含HttpClient上传Demo)

    简单的Demo,用于了解WebAPI如何同时接收文件及数据,同时提供HttpClient模拟如何同时上传文件和数据的Demo,下面是HttpClient上传的Demo界面 1.HttpClient部分 ...

  2. layui上传文件组件(前后端代码实现)

    我个人博客系统上传特色图片功能就是用layui上传文件组件做的.另外采用某个生态框架,尽量都统一用该生态框架对应的解决方案,因为这样一来,有这么几个好处?1.统一而不杂糅,有利于制定相应的编码规范,方 ...

  3. layui上传Excel更新数据并下载

    前言: 最近做项目遇到了一个需求,上传Excel获取数据更新Excel文档,并直接返回更新完的Excel到前端下载:其实需求并没有什么问题,关键是前端用到的是layui上传组件(layui.uploa ...

  4. layui上传文件配合进度条

    首先看一下效果图: 修改layui的源文件upload.js 1.打开layui/modules/upload.js 2.搜索ajax 3.找到url: 4.添加以下代码: ,xhr:l.xhr(fu ...

  5. c# 模拟表单提交,post form 上传文件、数据内容

    转自:https://www.cnblogs.com/DoNetCShap/p/10696277.html 表单提交协议规定:要先将 HTTP 要求的 Content-Type 设为 multipar ...

  6. layui上传文件前加入确认提示

    //上传文件 upload: function () { layui.use('upload', function () { var upload = layui.upload; //执行实例 var ...

  7. vue 上传文件 并以表格形式显示在页面上

    先上代码 <label for="file" class="btn">多文件上传</label> <input type=&quo ...

  8. 使用WebClient Post方式模拟上传文件和数据

    假如某网站有个表单,例如(url: http://localhost/login.aspx):帐号  密码 我们需要在程序中提交数据到这个表单,对于这种表单,我们可以使用 WebClient.Uplo ...

  9. layui上传文件前端报404,实际文件已经上传成功

    原因:上传回调的方法接收的参数应该是json格式的,之前返回的是String,所以一直走异常的方法 第一种 在后台上加上@ResponseBody 第二种 @ResponseBody @Request ...

随机推荐

  1. 4.kafka的安装部署

    为了安装过程对一些参数的理解,我先在这里提一下kafka一些重点概念,topic,broker,producer,consumer,message,partition,依赖于zookeeper, ka ...

  2. 堆(Heap)的实现

    这次实现了堆,这个堆不是指系统堆栈的堆,是一种数据结构,见下图 堆的本质就是一个数组(上图中,红色的是值,黑色的是下标)简单的来说就是把一个数组看成是二叉树,就像上图 大堆和小堆分别是指根节点比孩子节 ...

  3. 引爆你的Javascript代码进化 (转)

    转自 海玉的博客 方才在程序里看到一段JS代码,写法极为高明,私心想着若是其按照规范来写,定可培养对这门语言的理解,对JS编程能力提高必是极好的.说人话:丫代码写的太乱,看的窝火! 最近闲暇无事,准备 ...

  4. List的设置值,跟变量的位置关系(变量范围的变化导致结果差别很大)

    我们想要的结果是: [RegnTypeCharge: null,null,null,null,1,null,null,null,null,null,null,null,null,null,null,] ...

  5. wxpython 界面布局

    1.frame.Centre() 窗口出来后显示居中 2.textCtrl文本框style=wx.TE_PASSWORD密码, wx.TE_MULTILINE多行输入 3.单选按钮组 4.列表 5.图 ...

  6. Java 创建 ARM 虚拟机磁盘类型选择的问题

    问题描述 在Azure 门户创建 ARM 虚拟机时,我们直接可以选择虚拟机的磁盘类型,但是在 Azure Management Libraries for Java 的 API 中我们无法找到直接设置 ...

  7. monkeyrunner多点触摸

    思路是:在屏幕上某个位置按着不放:device.touch(x,y,md.DOWN) 然后再做一个滑动的操作:device.drap((x1,y1),(x2,y2),0.2,10) 然后再松开按键:d ...

  8. ABAP的语法高亮是如何在浏览器里显示的

    这篇文章的原文我发表在SAP官方社区上:https://blogs.sap.com/2018/03/09/how-abap-syntax-highlight-is-implemented-in-web ...

  9. SQLServer用存储过程实现插入更新数据

    实现 1)有同样的数据,直接返回(返回值:0): 2)有主键同样,可是数据不同的数据,进行更新处理(返回值:2): 3)没有数据,进行插入数据处理(返回值:1). [创建存储过程] Create pr ...

  10. Python:一些小知识

    小知识点总结 一.Python2与Python3 的区别 1.Python2中可以加括号输出,也可不加输出     Python3中必须加 2.python2 中有xrange(生成器)也有range ...