微信小程序:实现多功能表格效果,例如滚动效果、宽度自定义、多选、行内编辑等功能

一、表格效果

1、实现功能

表格实现可横向水平滚动表格、宽度自定义、文本编辑、数字加减、多选,行选中效果,获取选中行数据等功能

2、图片效果

 

二、代码

1、wxml

根据头循环将表格头进行循环,再通过昂循环展示行内的全部信息,根据数组width索引,去调整每一行的宽度,根据三目运算实现行的选中效果

<view class="main"><view class="table"><scroll-view class="scroll" scroll-y scroll-x><view class="header"><view class="header_item" wx:for="{{header}}" wx:key="index" style="width: {{width[index]}};">{{item}}</view></view><view class="content"><view class="content_line {{dataItem.checked ? 'selected-row' : ''}}" wx:for="{{list}}" wx:key="index" wx:for-item="dataItem"><view class="content_item" style="width: {{width[0]}};"><checkbox checked="{{dataItem.checked}}" bindtap="handleCheckboxChange" data-index="{{index}}" /></view><view class="content_item" style="width: {{width[1]}};">{{dataItem.date}}</view><view class="content_item" style="width: {{width[2]}};">{{dataItem.number}}</view><view class="content_item" style="width: {{width[3]}};"><input type="text" value="{{dataItem.person}}" bindinput="handlePersonInput" data-index="{{index}}" class="input-text" /></view><view class="content_item" style="width: {{width[4]}};">{{dataItem.item_no}}</view><view class="content_item" style="width: {{width[5]}};">{{dataItem.item_name}}</view><view class="content_item" style="width: {{width[6]}};">{{dataItem.sub_loc}}</view><view class="content_item" style="width: {{width[7]}};">{{dataItem.wait_qty}}</view><view class="content_item" style="width: {{width[8]}}; "><view class="btn" bindtap="handleNowQtySubtract" data-index="{{index}}">-</view><input type="number" value="{{dataItem.now_qty}}" bindinput="handleNowQtyInput" data-index="{{index}}" class="input-number" /><view class="btn" bindtap="handleNowQtyAdd" data-index="{{index}}">+</view></view><view class="content_item" style="width: {{width[9]}};"><view class="btn" bindtap="handleRejectQtySubtract" data-index="{{index}}">-</view><input type="number" value="{{dataItem.reject_qty}}" bindinput="handleRejectQtyInput" data-index="{{index}}" class="input-number" /><view class="btn" bindtap="handleRejectQtyAdd" data-index="{{index}}">+</view></view></view></view></scroll-view></view><view class="footer"><button bindtap="getSelectedData">获取选中的数据</button></view>
</view>

2、wxss

page {background-color: #f8f8f8;
}.table {width: 100%;
}.input-text {border-bottom: 1px solid #4eade4;text-align: center;
}/* 多选框样式 */
checkbox {display: flex;justify-content: center;align-items: center;
}/* 按钮样式 */
.footer {margin-top: 20px;text-align: center;
}button {width: 200px;background-color: #4bb6e7;color: white;border-radius: 5px;
}.scroll {overflow: hidden;background: white;width: 100%;
}.header {display: grid;grid-auto-flow: column;font-size: 26rpx;font-weight: bold;color: #292929;
}.header_item {display: flex;align-items: center;justify-content: center;text-align: center;background: #80d3f8;width: 150rpx;height: 60rpx;border: 1rpx solid #98a5ab;border-left: 0;border-top: 0;
}.content {background-color: #fff;
}.content_line {display: flex;flex-wrap: nowrap;width: max-content;border-bottom: 1px solid #eee;
}
/* 选中行样式 */
.content_line.selected-row {background-color: #d7edff;border-radius: 5px;
}
.content_item {width: 150rpx;height: 60rpx;display: flex;align-items: center;justify-content: center;border: 1rpx solid #98a5ab;border-left: 0;border-top: 0;font-size: 85%;word-break: break-all;
}.header_item:nth-child(1),
.content_item:nth-child(1) {border-left: 1rpx solid #98a5ab;
}.input-number {width: 35px;text-align: center;
}.btn {width: 25px;height: 20px;margin: 0 2px;padding: 0;font-size: 12px;line-height: 20px;text-align: center;background-color: rgb(96, 178, 226);
}

3、js

首先定义变量:头、宽度、行数据

处理多选功能、多选选中数据获取功能、文本输入功能、加减功能等

Page({data: {header: ['选择','日期', '单号', '人员', '料号', '名称', '储位', '待发', '本次发', '拒绝'],width: ['50px','50px', '100px', '50px', '100px', '100px', '50px', '50px', '100px', '100px'],list: [{date: '03-02',number: 'SL002401',person: '张三',item_no: '3019473',item_name: '螺丝',sub_loc: 'A1',wait_qty: 10,now_qty: 0,reject_qty: 0,},{date: '03-02',number: 'SL002401',person: '张三',item_no: '3019473',item_name: '螺丝',sub_loc: 'A1',wait_qty: 10,now_qty: 0,reject_qty: 0,},{date: '03-02',number: 'SL002401',person: '张三',item_no: '3019473',item_name: '螺丝',sub_loc: 'A1',wait_qty: 10,now_qty: 0,reject_qty: 0,},{date: '03-02',number: 'SL002401',person: '张三',item_no: '3019473',item_name: '螺丝',sub_loc: 'A1',wait_qty: 10,now_qty: 0,reject_qty: 0,},{date: '03-02',number: 'SL002401',person: '张三',item_no: '3019473',item_name: '螺丝',sub_loc: 'A1',wait_qty: 10,now_qty: 0,reject_qty: 0,},{date: '03-02',number: 'SL002401',person: '张三',item_no: '3019473',item_name: '螺丝',sub_loc: 'A1',wait_qty: 10,now_qty: 0,reject_qty: 0,},{date: '03-02',number: 'SL002401',person: '张三',item_no: '3019473',item_name: '螺丝',sub_loc: 'A1',wait_qty: 10,now_qty: 0,reject_qty: 0,},{date: '03-02',number: 'SL002401',person: '张三',item_no: '3019473',item_name: '螺丝',sub_loc: 'A1',wait_qty: 10,now_qty: 0,reject_qty: 0,},{date: '03-02',number: 'SL002401',person: '张三',item_no: '3019473',item_name: '螺丝',sub_loc: 'A1',wait_qty: 10,now_qty: 0,reject_qty: 0,},{date: '03-02',number: 'SL002401',person: '张三',item_no: '3019473',item_name: '螺丝',sub_loc: 'A1',wait_qty: 10,now_qty: 0,reject_qty: 0,},{date: '03-02',number: 'SL002401',person: '张三',item_no: '3019473',item_name: '螺丝',sub_loc: 'A1',wait_qty: 10,now_qty: 0,reject_qty: 0,},]},//多选框// 处理多选框点击事件handleCheckboxChange(e) {const { index } = e.currentTarget.dataset;const list = this.data.list.map((item, i) => {if (i === index) {return {...item,checked: !item.checked, // 切换选中状态};}return item;});this.setData({ list });},// 获取选中的数据getSelectedData() {const selectedData = this.data.list.filter(item => item.checked);console.log('选中的数据:', selectedData);return selectedData;},// 处理“人员”输入框输入事件handlePersonInput(e) {const { index } = e.currentTarget.dataset;const value = e.detail.value;this.updateItem(index, 'person', value);},// 处理“本次发”输入框输入事件handleNowQtyInput(e) {const { index } = e.currentTarget.dataset;const value = e.detail.value;this.updateItem(index, 'now_qty', parseInt(value, 10));},// 处理“本次发”增加按钮点击事件handleNowQtyAdd(e) {const { index } = e.currentTarget.dataset;const item = this.data.list[index];this.updateItem(index, 'now_qty', item.now_qty + 1);},// 处理“本次发”减少按钮点击事件handleNowQtySubtract(e) {const { index } = e.currentTarget.dataset;const item = this.data.list[index];this.updateItem(index, 'now_qty', Math.max(item.now_qty - 1, 0)); // 最小值为 0},// 处理“拒绝”输入框输入事件handleRejectQtyInput(e) {const { index } = e.currentTarget.dataset;const value = e.detail.value;this.updateItem(index, 'reject_qty', parseInt(value, 10));},// 处理“拒绝”增加按钮点击事件handleRejectQtyAdd(e) {const { index } = e.currentTarget.dataset;const item = this.data.list[index];this.updateItem(index, 'reject_qty', item.reject_qty + 1);},// 处理“拒绝”减少按钮点击事件handleRejectQtySubtract(e) {const { index } = e.currentTarget.dataset;const item = this.data.list[index];this.updateItem(index, 'reject_qty', Math.max(item.reject_qty - 1, 0)); // 最小值为 0},// 更新数据的方法updateItem(index, key, value) {const list = this.data.list.map((item, i) => {if (i === index) {return {...item,[key]: value};}return item;});this.setData({list});}
})

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

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

相关文章

uni-app vue2 记住密码功能

1. html代码 <checkbox-group change"checkboxChange"><label><checkbox value"" :checked"ifSavePwd" style"transform: scale(0.6);"/>记住密码</label> </checkbox-group>2. js代码 默认复选款是不…

深度学习优化-Gradient Checkpointing

数学原理参考&#xff1a; 梯度检查点技术&#xff08;Gradient Checkpointing&#xff09;详细介绍&#xff1a;中英双语-CSDN博客 视频讲解参考&#xff1a; 用梯度检查点来节省显存 gradient checkpointing_哔哩哔哩_bilibili Gradient Checkpointing&#xff08;梯度检查…

sql靶场-时间盲注(第九、十关)保姆级教程

目录 时间盲注&#xff08;第九、十关&#xff09; 1.判断 2.确认时间盲注 2.手工尝试时间盲注 数据库名长度 数据库名字符 表数 表名长度 表名字符 字段数 字段名长度 字段名字符 4.脚本时间盲注注入 5.第十关 时间盲注&#xff08;第九、十关&#xff09; 1.判…

小米路由器SSH下安装DDNS-GO

文章目录 前言一、下载&#xff06;安装DDNS-GO二、配置ddns-go设置开机启动 前言 什么是DDNS&#xff1f; DDNS&#xff08;Dynamic Domain Name Server&#xff09;是动态域名服务的缩写。 目前路由器拨号上网获得的多半都是动态IP&#xff0c;DDNS可以将路由器变化的外网I…

Flutter_学习记录_device_info_plus 插件获取设备信息

引入三方库device_info_plus导入头文件 import package:device_info_plus/device_info_plus.dart;获取设备信息的主要代码 DeviceInfoPlugin deviceInfoPlugin DeviceInfoPlugin(); BaseDeviceInfo deviceInfo await deviceInfoPlugin.deviceInfo;完整案例 import package…

【现代深度学习技术】卷积神经网络05:汇聚层

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上&#xff0c;结合当代大数据和大算力的发展而发展出来的。深度学习最重…

Amazon RDS ProxySQL 探索(一)

:::info &#x1f4a1; 在日常开发中&#xff0c;开发者们会涉及到数据库的连接&#xff0c;在使用Amazon RDS数据库时&#xff0c;若使用集群模式或者多数据库时&#xff0c;会出现一写多读多个Endpoint&#xff0c;在实际开发中&#xff0c; 开发者们配置数据库连接通常希望走…

Appium高级操作--ActionChains类、Toast元素识别、Hybrid App操作、手机系统API的操作

书接上回Appium高级操作--从源码角度解析--模拟复杂手势操作-CSDN博客文章浏览阅读712次&#xff0c;点赞24次&#xff0c;收藏6次。下面总结Appium模拟复杂手势整体流程创建类实例action时&#xff0c;一定要传入WebDriver实例参数&#xff0c;创建实例成功后&#xff0c;调用…

媲美Deepseek R1 671B的千问QwQ32B本地部署与远程访问实测流程

文章目录 前言1. 环境准备2.QwQ 32B模型安装与运行测试3. 安装Open WebUI图形化界面3.1 安装Open WebUI3.2 添加QWQ32B模型 4. 安装内网穿透工具5. 配置固定公网地址总结 前言 近日&#xff0c;阿里千问发布了最新推理模型QwQ32B &#xff01;并表示“它只有 320亿参数&#x…

SpringBoot整合RabbitMq

1.引入依赖 <!--RabbitMq相关--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId> </dependency>2.application.yml文件配置 spring:rabbitmq:host: 192.168.101.129…

2024年第十五届蓝桥杯软件C/C++大学A组——五子棋对弈

蓝桥杯原题&#xff1a; 题目描述&#xff1a; “在五子棋的对弈中&#xff0c;友谊的小船说翻就翻&#xff1f; ” 不&#xff01;对小蓝和小桥来说&#xff0c;五子棋不仅是棋盘上的较量&#xff0c;更是心与心之间的沟通。这两位挚友秉承着 “ 友谊第一&#xff0c;比赛第二…

PyQt基础——简单的图形化界面(窗口)

一、代码展示 import sysfrom PyQt6.QtGui import QPixmap from PyQt6.QtWidgets import QWidget, QApplication, QLabel, QLineEdit, QPushButton from PyQt6 import uic from PyQt6.QtCore import Qt# 封装一个我的窗口类 class MyWidget(QWidget):def __init__(self):supe…

大语言模型-1.2-大模型技术基础

简介 本博客内容是《大语言模型》一书的读书笔记&#xff0c;该书是中国人民大学高瓴人工智能学院赵鑫教授团队出品&#xff0c;覆盖大语言模型训练与使用的全流程&#xff0c;从预训练到微调与对齐&#xff0c;从使用技术到评测应用&#xff0c;帮助学员全面掌握大语言模型的…

【MATLAB例程】AOA(到达角度)法,多个目标定位算法,三维空间、锚点数量自适应(附完整代码)

给出AOA方法下的多目标定位,适用三维空间,锚点数量>3即可,可自定义目标和锚点的数量、坐标等。 文章目录 运行结果源代码代码讲解概述功能代码结构运行结果 10个锚点、4个目标的情况: 100个锚点、10个目标的情况: 修改方便,只需调节下面的两个数字即可: 源代码 …

[CVE-2017-10271]Weblogic--WLS Security反序列化漏洞复现

文章目录 靶机地址靶机说明开启并访问靶机POCexp反弹shell后续查找flag过程略 靶机地址 网站地址 cyberstrikelab.com 靶机地址CVE-2017-10271 靶机说明 Weblogic的WLS Security组件对外提供webservice服务&#xff0c;其中使用了XMLDecoder来解析用户传入的XML数据&#xf…

如何在vscode中编译linux中的c++文件

方式一 在终端打开进行连接编译 指令含义&#xff1a;将 muduo_server.cpp 源文件编译成一个可执行文件 server&#xff0c;并且在链接过程中使用 muduo_net、muduo_base 库以及 pthread 库 方式二 在vscode中修改配置文件 按F1打开配置文件搜索栏&#xff0c;输入C/C 打开…

Unity中刚体撞墙抖动的原因和本质

当我们制作角色移动的时候我们都知道使用设置位置的方法来移动一个带有刚体和碰撞体的物体&#xff0c;遇到碰撞体的时候就会抖动。 上网查找原因&#xff0c;都说是和物理系统冲突导致的&#xff0c;然后再也找不到其他线索。 这个说法&#xff0c;对&#xff0c;但它并不是最…

文件解析漏洞靶场通关合集

一、IIS解析漏洞 &#xff08;一&#xff09;iis6的目录解析漏洞(.asp目录中的所有文件都会被当做asp文件执行) 第一步&#xff1a;在网站根目录下创建了一个x.asp文件夹&#xff0c;并在文件夹中创建一个名为1.txt的文本文档 第二步&#xff1a;文本文档中输入<% now()%&…

【Linux】浅谈冯诺依曼和进程

一、冯诺依曼体系结构 冯诺依曼由 输入设备、输出设备、运算器、控制器、存储器 五部分组成。 冯诺依曼的设计特点 二进制表示 所有数据&#xff08;包括程序指令&#xff09;均以二进制形式存储和运算&#xff0c;简化了硬件逻辑设计&#xff0c;提高了可靠性。 存储程序原理…

技术聚焦:Debezium 如何将数据库数据精准注入 Kafka

#作者&#xff1a;任少近 文章目录 第一章 Debezium抽取mysql数据给kafka原理第二章 Debezium 与kafka抽取方法及验证2.1 debezium2.0kafka3.3.1mysql82.2 debezium2.0kafka2.6.1mysql82.3 debezium2.0kafka2.6.1mysql5.7 第一章 Debezium抽取mysql数据给kafka原理 debezium的…