layui table 自定义表头

自定义表头-查询

js/css静态文件引用

<!-- 引入 layui.css -->
<link href="//unpkg.com/layui@2.9.16/dist/css/layui.css" rel="stylesheet">
<!-- 引入 layui.js -->
<script src="//unpkg.com/layui@2.9.16/dist/layui.js"></script>

html

<script type="text/html" id="sex">{{#  if(d.sex == 10){ }}男{{# }else if(d.sex == 20) { }}女{{# }else{ }}未知{{# } }}
</script>
<table class="layui-hide" id="tableDemo"></table>

javascript

<script>layui.use(function () {var filters = {};  // 保存每个输入框的值var form = layui.form;var table = layui.table;var laydate = layui.laydate;var dropdown = layui.dropdown;table.render({elem: '#tableDemo',method: "post",//url: '', //如果要访问后台,改成你的api地址即可//where: { p1: p1, p2: p2, p3: p3},//切换成你的请求实体对象cols: [[{ field: 'id', title: 'ID', width: 80, sort: true, fixed: true },{ field: 'username', title: '用户', width: 120, fixed: true },{ field: 'sign', title: '签名', width: 160 },{ field: 'sex', title: '性别', width: 80, templet: '#sex' },{ field: 'city', title: '城市', width: 100 },{ field: 'experience', title: '积分', width: 80, sort: true }]],data: [{ // 赋值已知数据"id": "10001","username": "张三1","sex": "10","city": "浙江杭州","sign": "人生恰似一场修行","experience": "116"}, {"id": "10002","username": "张三2","sex": "","city": "浙江杭州","sign": "人生恰似一场修行","experience": "12",}, {"id": "10003","username": "张三3","sex": "10","city": "浙江杭州","sign": "人生恰似一场修行","experience": "65"}, {"id": "10004","username": "张三4","sex": "20","city": "浙江杭州","sign": "人生恰似一场修行","experience": "777"}, {"id": "10005","username": "张三5","sex": "20","city": "浙江杭州","sign": "人生恰似一场修行","experience": "86"}, {"id": "10006","username": "张三6","sex": "10","city": "浙江杭州","sign": "人生恰似一场修行","experience": "12"}, {"id": "10007","username": "张三7","sex": "20","city": "浙江杭州","sign": "人生恰似一场修行","experience": "16"}, {"id": "10008","username": "张三8","sex": "10","city": "浙江杭州","sign": "人生恰似一场修行","experience": "106"}],scrollX: true,  // 启用横向滚动fixed: true,page: false,done: function (res, curr, count) {loadCustomSearch(res);}});///初始化查询条件function loadCustomSearch(response) {//这个务必保留 由于使用了flexd layui原理是两个相同的,所以如果不加这个,flexd的列会出现错行var fixedHeader = document.querySelectorAll('.layui-table-fixed thead th');fixedHeader.forEach(function (item, index) {var width = item.offsetWidth - 2 + 'px';if (item.querySelector('input') === null) {//用户if (index == 1) {generateSearchByText("", width, "username", item);}//签名if (index == 2) {generateSearchByText("", width, "sign", item);}}});var th = document.querySelectorAll('thead th');th.forEach(function (item, index) {var width = item.offsetWidth - 2 + 'px';if (item.querySelector('input') === null) {//用户if (index == 1) {generateSearchByText("", width, "username", item);}//签名if (index == 2) {generateSearchByText("", width, "sign", item);}// if (index == 4) {//     generateSearchByDateRange("", "98px", "Create_Date", "Create_DateStart", "Create_DateEnd", item, "date");// }}if (item.querySelector('select') === null) {//性别if (index == 3) {generateSearchBySelect("", width, "sex", item, 0);}}});// 重新计算布局table.resize('tableDemo');}///生成文本框的查询条件function generateSearchByText(placeHolder, width, name, item) {var input = document.createElement('input');input.name = name;input.type = 'text';input.placeholder = placeHolder;input.style.width = width;input.style.fontWeight = "normal";// 如果之前保存了该列的输入内容,填充到输入框中if (filters[name]) {input.value = filters[name];}item.appendChild(input);// 绑定事件input.addEventListener('change', function (e) {var searchValue = e.target.value;// 保存当前输入框的值filters[name] = searchValue;searchChange();});}///生成时间区间查询条件function generateSearchByDateRange(placeHolder, width, dvName, startName, endName, item, type) {let newWidth = width - 6;// 创建时间区间控件的容器var container = document.createElement('div');container.id = dvName;container.style.display = 'flex';container.style.alignItems = 'center';// 创建开始日期输入框var startInput = document.createElement('input');startInput.id = startName;startInput.placeholder = '开始日期';startInput.style.width = width;startInput.style.fontWeight = "normal";// 创建结束日期输入框var endInput = document.createElement('input');endInput.id = endName;endInput.placeholder = '结束日期';endInput.style.width = width;endInput.style.fontWeight = "normal";if (filters[startName]) {startInput.value = filters[startName];}if (filters[endName]) {endInput.value = filters[endName];}container.appendChild(startInput);container.appendChild(document.createTextNode(' - ')); // 添加一个分隔符container.appendChild(endInput);item.appendChild(container);// 使用 laydate.render 绑定时间区间控件laydate.render({elem: '#' + dvName,type: type,fullPanel: true, // 2.8+range: ['#' + startName, '#' + endName],rangeLinked: true,min: minDate,max: maxDate,done: function (value, date, endDate) {// 确保值不为空且包含 " - "if (value && value.includes(' - ')) {var dates = value.split(' - ');  // 分割成开始日期和结束日期var startDate = dates[0];  // 获取开始日期var endDate = dates[1];  // 获取结束日期filters[startName] = startDate;filters[endName] = endDate;document.getElementById(startName).value = startDate;document.getElementById(endName).value = endDate;}searchChange();}});}///生成下拉框的查询条件function generateSearchBySelect(placeHolder, width, name, item, type) {// 创建 select 下拉菜单var select = document.createElement('select');select.id = name;select.name = name;select.style.width = width;select.style.display = "block";select.style.fontWeight = "normal";//禁用layui的select组件样式渲染//不适用此属性的时候,页面会出现先展示layui的select,后展示原生的select组件//此属性开启,则默认不适用layui的select样式select.setAttribute('lay-ignore', true);select.add(new Option("", ""));select.add(new Option("男", "10"));select.add(new Option("女", "20"));if (filters[name]) {select.value = filters[name];}item.appendChild(select);$(select).on('change', function () {var selectedValue = $(this).val();// 保存当前输入框的值filters[name] = selectedValue;searchChange();});}//列头查询事件function searchChange() {table.reload('tableDemo', {where: {  // 添加查询条件dto: sureEntity},page: false,done: function (res, curr, count) {loadCustomSearch(res);}});}});
</script>

表头弹tip信息

javascript

        table.render({elem: '#tableDemo',method: "post",//url: '', //如果要访问后台,改成你的api地址即可//where: { p1: p1, p2: p2, p3: p3},//切换成你的请求实体对象cols: [[{ field: 'id', title: 'ID', width: 80, sort: true, fixed: true },{ field: 'username', title: '用户', width: 120, fixed: true },{ field: 'sign', title: '签名', width: 160 },{ field: 'sex', title: '性别', width: 80, templet: '#sex' },{ field: 'city', title: '城市', width: 100 },{ field: 'experience', title: '积分', width: 80, sort: true }]],data: [{ // 赋值已知数据"id": "10001","username": "张三1","sex": "10","city": "浙江杭州","sign": "人生恰似一场修行","experience": "116"}, {"id": "10002","username": "张三2","sex": "","city": "浙江杭州","sign": "人生恰似一场修行","experience": "12",}, {"id": "10003","username": "张三3","sex": "10","city": "浙江杭州","sign": "人生恰似一场修行","experience": "65"}, {"id": "10004","username": "张三4","sex": "20","city": "浙江杭州","sign": "人生恰似一场修行","experience": "777"}, {"id": "10005","username": "张三5","sex": "20","city": "浙江杭州","sign": "人生恰似一场修行","experience": "86"}, {"id": "10006","username": "张三6","sex": "10","city": "浙江杭州","sign": "人生恰似一场修行","experience": "12"}, {"id": "10007","username": "张三7","sex": "20","city": "浙江杭州","sign": "人生恰似一场修行","experience": "16"}, {"id": "10008","username": "张三8","sex": "10","city": "浙江杭州","sign": "人生恰似一场修行","experience": "106"}],scrollX: true,  // 启用横向滚动fixed: true,page: false,done: function (res, curr, count) {var tipContent = "我是自定义Tip信息";$('.layui-table tr').each(function (index, item) {var nameCell = $(item).find('th').eq(1);let nIndex;nameCell.on('mouseenter', function () {nIndex = layer.tips(tipContent, this, {tips: [1, "#3A3D49"],});});nameCell.on('mouseleave', function () {layer.close(nIndex);});});}});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/447270.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法 动态规划

更多文章&#xff1a;https://www.pandaer.space 动态规划 算法很简单&#xff01;今天我们来聊聊动态规划&#xff0c;我们先从动态规划怎么来的讲起&#xff0c;然后聊聊动态规划应该如何学&#xff1f;最后正式开始动态规划的学习之旅。 动态规划怎么就出现了呢&#xff…

串扰的耦合长度与串扰的关系

一、 名词解释 串扰&#xff1a;简单理解为两条或者多条信号线产生的耦合现象 攻击传输线&#xff08;侵略线&#xff09;&#xff1a;对其他线产生影响的线 受害传输线&#xff1a;被影响的线 串扰产生的原因&#xff0c;简单来说就是当线与线之间平行布线时&#xff0c;两…

2d实时数字人聊天语音对话使用案例,对接大模型

参看: https://github.com/wan-h/awesome-digital-human-live2d 电脑环境: ubuntu 1060ti 下载: git clone https://github.com/wan-h/awesome-digital-human-live2d.gitdocker部署; cd awesome-digital-human-live2d docker-compose -f docker-compose-quickStart.ya…

基于springboot的网页时装购物系统(含源码)

随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;时装购物系统当然也不能排除在外。时装购物系统是以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法&#xff0c;采…

Excel:vba实现禁止新增工作表

实现效果&#xff1a;禁止新增工作表 步骤如下&#xff1a; 1.点击开发工具里面的Visual Basic 2.不要自己创建&#xff0c;点击ThisWorkbook&#xff0c;点击选择Workbook&#xff0c;点击选择NewSheet 这里的NewSheet就是工作簿事件 代码如下&#xff1a; 这是事件处理程序…

Shell脚本:分发文件到各个集群节点

找一个全局目录/root/bin 写脚本 touch xsync chmod 777 xsync #!/bin/bash#作者&#xff1a;ldj #时间&#xff1a;2024-10-15 #描述&#xff1a;拷贝文件#1. 判断参数个数 if [ $# -lt 1 ]thenecho "Error: Not Enough Argument!"exit fi#2.遍历集群所有机器 spac…

两种Allan方差计算方法一致

陀螺仪数据使用西工大严老师开源代码avar函数计算方差和matlab2022自带allanvar函数计算其allan&#xff0c;两者计算一致。 方法一 tau0 0.01; [adev, tau, Err] avar(dataOne, tau0, str1); avarfit(adev, tau); %严老师开源程序拟合函数 结果&#xff1a;Q0.223 ; N0.…

QT实现校园导航

导航是地图类项目实战中经常会遇到了。看上去貌似没头绪&#xff0c;其实是有模板遵循的。我们直接根据图看代码。 //MainWidget.h#ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include "mapwidget.h" #include <QToolButton> #in…

C++在vscode中的code runner配置/环境配置

C在vscode中快捷运行&#xff08;code runner&#xff09; 一、配置tasks.json 在vscode中创建文件夹或打开文件夹&#xff0c;会发现文件夹下多了一个.vscode文件夹&#xff0c;在该文件夹下创建tasks.json文件&#xff0c;并添加一下内容 {"version": "2.0…

SCRM呼叫中心高保真Axure原型 源文件分享

在数字化时代&#xff0c;客户关系管理&#xff08;CRM&#xff09;对于企业的成功至关重要。SCRM呼叫中心后台作为一款专为CRM设计的软件原型&#xff0c;致力于为企业提供高效、智能的客户沟通解决方案。本文将详细介绍该产品的核心功能及其对企业提升客户满意度和销售业绩的…

前端/node.js锁定依赖版本、锁定依赖的依赖的版本

一、知识前提 version&#xff1a;必须依赖某个具体的版本。如&#xff1a;vue的3.2.0&#xff0c;表示必须安装3.2.0版本。>version&#xff1a;必须大于某个版本。>version&#xff1a;大于或等于某个版本。<version&#xff1a;必须小于某个版本。<version&…

Backward Chaining(后向链推理)

这张图介绍了 Backward Chaining&#xff08;后向链推理&#xff09; 的基本概念和步骤。 后向链推理的基本思路&#xff1a; 后向链推理的目标是从查询目标 ( q ) 开始&#xff0c;向后推导前提条件&#xff0c;验证该查询是否成立。 证明目标 ( q ) 的步骤&#xff1a; 检…

MySQL中 turncate、drop和delete的区别

MySQL中 turncate、drop和delete区别 turncate 执行速度快&#xff0c;删除所有数据&#xff0c;但是保留表结构不记录日志事务不安全&#xff0c;不能回滚可重置自增主键计数器 drop 执行速度较快&#xff0c;删除整张表数据和结构不记录日志事务不安全&#xff0c;不能回…

源码编译llama.cpp for windows on arm

源码编译llama.cpp for windows on arm 这里有编译好的&#xff0c;直接下载使用 https://github.com/turingevo/llama.cpp-build/releases 1 先编译openblas for windows on arm 查看我的文章 《源码编译 openblas for windows on arm》 2 启用OpenBlas加速 上一步openb…

基于yolov8、yolov5的鸟类检测系统(含UI界面、数据集、训练好的模型、Python代码)

项目介绍 项目中所用到的算法模型和数据集等信息如下&#xff1a; 算法模型&#xff1a;     yolov8、yolov8 SE注意力机制 或 yolov5、yolov5 SE注意力机制 &#xff0c; 直接提供最少两个训练好的模型。模型十分重要&#xff0c;因为有些同学的电脑没有 GPU&#xff0…

FastApi SQLAlchemy SQLite

FastApi fastapi是一个用于构建API 的现代、快速&#xff08;高性能&#xff09;的web框架&#xff0c;它是建立在Starlette和Pydantic基础上的。 Pydantic是一个基于Python类型提示来定义数据验证、序列化和文档的库&#xff0c;Starlette是一种轻量级的ASGI框架/工具包&…

流程图 LogicFlow

流程图 LogicFlow 官方文档&#xff1a;https://site.logic-flow.cn/tutorial/get-started <script setup> import { onMounted, ref } from vue import { forEach, map, has } from lodash-es import LogicFlow, { ElementState, LogicFlowUtil } from logicflow/core …

Vue Data UI——Vue 3 数据可视化组件库

文章目录 1、Vue Data UI2、核心特点2.1.Vue 3 的深度集成2.2 丰富的可视化组件2.3 灵活的定制性2.4 易于集成2.5 文件导出功能2.6 多主题支持3、如何在项目中使用 Vue Data UI?3.1 安装 Vue Data UI3.2 全局注册组件3.3 局部引入组件3.4 使用通用组件3.5 TypeScript 集成4、总…

新年好——Dijkstra+Permutation

题目 代码 #include <bits/stdc.h> using namespace std; #define x first #define y second typedef pair<int, int> PII; const int N 5e410, M 2e510; const int inf 0x3f3f3f3f; int n, m; int a[6]; int h[N], e[M], ne[M], idx, w[M]; int dist[6][N];…

倾斜的角标 android倾斜角标实现

android倾斜角标实现_android 图片角标如何制作-CSDN博客 import android.annotation.TargetApi; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint;…