微信小程序:动态表格实现,表头单元格数据完全从data中获取,宽度自定义,自定义文本框,行勾选,样式效果,横向滚动表格(解决背景色不足的问题)等

一、样式效果 

二、代码

1、wxml

<view class="line flex flex-center"><view class="none" wx:if="{{info.length == 0}}">暂无料号</view><view wx:else class="table-container"><!-- 动态生成表头 --><view class="table-header-wrapper"><view class="table-header flex"><view wx:for="{{tableColumns}}" wx:key="key" class="th" style="flex: 0 0 {{item.width}}; min-width: {{item.width}};">{{item.title}}</view></view></view><!-- 表格数据行 --><view class="table-body-wrapper"><view class="table-body"><view class="table-row flex {{rowData.checked ? 'row-selected' : ''}}" wx:for="{{info}}" wx:key="index" wx:for-item="rowData" data-id="{{rowData.id}}"><view wx:for="{{tableColumns}}" wx:key="key" wx:for-item="colConfig" class="td" style="flex: 0 0 {{colConfig.width}}; min-width: {{colConfig.width}};"><block wx:if="{{colConfig.key === 'checked'}}"><checkbox value="{{rowData.id}}" checked="{{rowData.checked}}" bindtap="handleSelectItem" data-id="{{rowData.id}}" /></block><block wx:elif="{{colConfig.editable}}"><!-- 新增判断条件 --><input type="number" value="{{rowData[colConfig.key]}}" placeholder="请输入" bindinput="handleInputChange" data-id="{{rowData.id}}" data-index="{{index}}" data-key="{{colConfig.key}}" /></block><block wx:else>{{rowData[colConfig.key] || '--'}}</block></view></view></view></view></view>
</view>
<view class="btn" bindtap="submitCheckedItems">提交
</view>

2、wxss

/* 行关系 */
.line {width: 100%;margin-top: 50px;
}.none {color: rgb(153, 153, 153);
}/* 表格容器 */
.table-container {width: 100%;font-size: 12px;overflow-x: auto;
}/* 表头包装器 */
.table-header-wrapper {width: max-content;min-width: 100%;
}/* 表头样式 */
.table-header {border-bottom: 1px solid #eaeaea;background-color: #b9e3fc;
}/* 表格内容包装器 */
.table-body-wrapper {width: fit-content;
}/* 表头和表格行通用样式 */
.table-header,
.table-row {display: flex;align-items: center;
}/* 表头单元格和表格单元格 */
.th,
.td {padding: 8px 0;text-align: center;word-break: break-word;display: flex;justify-content: center;align-items: center;
}/* 表格行样式 */
.table-row {min-width: 100%;
}/* 隔行变色效果(可选) */
.table-row:nth-child(even) {background-color: #ececec;
}/* 复选框样式调整 */
.td checkbox {transform: scale(0.7);
}/* 选中行样式 */
.row-selected {background-color: #ebf9ff !important;position: relative;
}.td input {width: 80%;text-align: center;background-color: rgb(255, 255, 255);border: 1px solid rgb(165, 165, 165);
}/* 按钮 */
.btn {width: 100%;background-color: #4cc46b;position: absolute;margin-top: 100px;display: flex;justify-content: center;align-items: center;height: 30px;color: #fff;
}

3、js

// pages/test3/index.js
Page({data: {// 动态表头配置tableColumns: [{key: 'checked',title: '选择',width: '80rpx',maxWidth: '100rpx'},{key: 'Qty2',title: '输入数量',width: '150rpx',maxWidth: '150rpx',editable: true},{key: 'Qty1',title: '总数量',width: '150rpx',maxWidth: '150rpx'},{key: 'code',title: '唯一码',width: '150rpx',maxWidth: '200rpx'},{key: 'name',title: '名称',width: '180rpx',maxWidth: '250rpx'},{key: 'type',title: '类型',width: '150rpx',maxWidth: '300rpx'},],// 表格数据info: [{id: 1,checked: false,code: "111",name: "名称1",type: "类型1",Qty1: 444,Qty2: 0,},{id: 2,checked: false,code: "222",name: "名称2",type: "类型1",Qty1: 497,Qty2: 0,},{id: 3,checked: false,code: "333",name: "名称3",type: "类型2",Qty1: 234,Qty2: 0,},{id: 4,checked: false,code: "444",name: "名称4",type: "类型1",Qty1: 5,Qty2: 0,}]},// 复选框选择事件handleSelectItem: function (e) {const id = e.currentTarget.dataset.id;const info = this.data.info.map(item => {if (item.id == id) {return {...item,checked: !item.checked};}return item;});this.setData({info});},// 处理输入框变化handleInputChange: function (e) {const {id,key} = e.currentTarget.dataset;const value = e.detail.value;const info = this.data.info.map(item => {if (item.id == id) {return {...item,[key]: value};}return item;});this.setData({info});},// 提交方法 - 获取勾选的数据submitCheckedItems: function () {const checkedItems = this.data.info.filter(item => item.checked);if (checkedItems.length === 0) {wx.showToast({title: '请至少选择一项',icon: 'none'});return;}// 这里可以发送到服务器或处理数据console.log('提交的数据:', checkedItems);}
})

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

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

相关文章

探索 MCP 和 A2A 协议: 本质上新协议都基于 HTTP的

以下是以 CSDN 博客的形式记录你对 MCP 协议和 A2A 协议数据传递的理解&#xff0c;重点探讨了它们为何基于 HTTP 协议、HTTP 的优势&#xff0c;以及数据传输的本质。文章面向技术社区&#xff0c;结构清晰&#xff0c;适合分享。 探索 MCP 和 A2A 协议&#xff1a;为何新协议…

[redis进阶一]redis的持久化(2)AOF篇章

目录 一 为什么有了RDB持久化机制还要有AOF呢 板书介绍具体原因: ​编辑二 详细讲解AOF机制 (1)AOF的基本使用 1)板书如下 2)开启AOF机制: 3) AOF工作流程 (2)AOF是否会影响到redis性能 ​编辑 (3)AOF缓冲区刷新策略 (4)AOF的重写机制 板书如下: 为什么要有这个重写机…

前端防御性编程

关于防御性编程 你是否遇到过&#xff0c;接口请求失败或者返回数据错误&#xff0c;导致系统白屏或者前端自身写的代码存在一些缺陷&#xff0c;导致整个系统不够健壮&#xff0c;从而导致系统白屏 常见的问题与防范 最常见的问题 访问了null或者undefined的属性 null.a …

[数据结构]排序 --2

目录 8、快速排序 8.1、Hoare版 8.2、挖坑法 8.3、前后指针法 9、快速排序优化 9.1、三数取中法 9.2、采用插入排序 10、快速排序非递归 11、归并排序 12、归并排序非递归 13、排序类算法总结 14、计数排序 15、其他排序 15.1、基数排序 15.2、桶排序 8、快速排…

虎跃办公AI:重构智能办公的「模型交响乐团」

虎跃办公AI&#xff1a;重构智能办公的「模型交响乐团」 ——当全球40大模型在办公场景中奏响协奏曲 在某科创园区的会议室里&#xff0c;市场总监李薇正用AI生成产品发布会方案&#xff0c;设计团队同步调校着AI渲染的3D主视觉&#xff0c;法务AI自动扫描着合同风险条款——这…

JdbcTemplate基本使用

JdbcTemplate概述 它是spring框架中提供的一个对象&#xff0c;是对原始繁琐的JdbcAPI对象的简单封装。spring框架为我们提供了很多的操作模板类。例如:操作关系型数据的JdbcTemplate和MbernateTemplate&#xff0c;操作nosql数据库的RedisTemplate&#xff0c;操作消息队列的…

vue+leaflet 区域划分_反向遮罩层

leaflet 区域划分_遮罩层 geojson在线生成器网址:(https://datav.aliyun.com/portal/school/atlas/area_selector) 点击前往阿里云geojson生成器 效果图: 实现下面效果,只需要把addSateLayer函数的调用取消掉就好了. //添加遮罩层代码function addMask() {var latlngs;var fe…

ESP32开发之ubuntu环境搭建

1. 在Ubuntu官网下载Ubuntu server 20.04版本https://releases.ubuntu.com/20.04.6/ 2. 在vmware下安装Ubuntu 3. 改Ubuntu静态IP $ sudo vi /etc/netplan/00-installer-config.yaml# This is the network config written by ‘subiquity’ network: renderer: networkd eth…

HTTP 1.1 比 HTTP1.0 多了什么?(详尽版)

相较于HTTP 1.0&#xff0c;1.1 版本增加了以上特性&#xff1a; 1. 新增了连接管理即 keepalive&#xff0c;允许持久连接。 定义&#xff1a; Keepalive允许客户端和服务器在完成一次请求-响应后&#xff0c;保持连接处于打开状态&#xff0c;以便后续请求复用同一连接&am…

【深度学习】PyTorch实现VGG16模型及网络层数学原理

一、Demo概述 代码已附在文末 1.1 代码功能 ✅ 实现VGG16网络结构✅ 在CIFAR10数据集上训练分类模型 1.2 环境配置 详见【深度学习】Windows系统Anaconda CUDA cuDNN Pytorch环境配置 二、各网络层概念 2.1 卷积层&#xff08;nn.Conv2d&#xff09; nn.Conv2d(in_cha…

解决RecyclerView在调用smoothScrollToPosition后最后一个item底部超出屏幕的问题

要解决RecyclerView在调用smoothScrollToPosition后最后一个item底部超出屏幕的问题&#xff0c;可以使用自定义的LinearSmoothScroller&#xff0c;使其底部对齐屏幕。步骤如下&#xff1a; 创建自定义的SmoothScroller类&#xff1a; 继承LinearSmoothScroller并重写getVerti…

k8s亲和力和非亲和力

在 Kubernetes 中&#xff0c;亲和力&#xff08;Affinity&#xff09;和非亲和力&#xff08;Anti-Affinity&#xff09;是用于控制 Pod 调度策略的机制&#xff0c;它们可以帮助优化资源利用率、提高应用性能和可用性。以下是亲和力和非亲和力的详细解释&#xff1a; 亲和力…

开发一款游戏需要哪些岗位角色参与?

常见分类 1. 游戏策划&#xff08;Game Designer&#xff09; 核心职责&#xff1a;设计游戏的玩法、规则、内容和整体体验。 具体工作&#xff1a; 系统设计&#xff1a;设计游戏的战斗、经济、成长、社交等核心系统。 数值设计&#xff1a;平衡角色属性、装备数值、经济系…

Asp.NET Core WebApi 创建带鉴权机制的Api

构建一个包含 JWT&#xff08;JSON Web Token&#xff09;鉴权的 Web API 是一种常见的做法&#xff0c;用于保护 API 端点并验证用户身份。以下是一个基于 ASP.NET Core 的完整示例&#xff0c;展示如何实现 JWT 鉴权。 1. 创建 ASP.NET Core Web API 项目 使用 .NET CLI 或 …

Jenkins 发送钉钉消息

这里不介绍 Jenkins 的安装&#xff0c;可以网上找到很多安装教程&#xff0c;重点介绍如何集成钉钉消息。 需要提前准备钉钉机器人的 webhook 地址。&#xff08;网上找下&#xff0c;很多教程&#xff09; 下面开始配置钉钉机器人&#xff0c;登录 Jenkins&#xff0c;下载 …

CentOS中离线安装DockerCompos并用其部署Rabbitmq(使用离线导入导出docker镜像方式)

场景 DockerDockerCompose实现部署jenkins,并实现jenkinsfile打包SpringBootVue流水线项目过程详解、踩坑记录(附镜像资源、离线包资源下载)&#xff1a; DockerDockerCompose实现部署jenkins,并实现jenkinsfile打包SpringBootVue流水线项目过程详解、踩坑记录(附镜像资源、离…

stm32week11

stm32学习 八.stm32基础 2.stm32内核和芯片 F1系统架构&#xff1a;4个主动单元和4个被动单元 AHB是内核高性能总线&#xff0c;APB是外围总线 总线矩阵将总线和各个主动被动单元连到一起 ICode总线直接连接Flash接口&#xff0c;不需要经过总线矩阵 AHB&#xff1a;72MHz&am…

贪心算法:部分背包问题深度解析

简介&#xff1a; 该Java代码基于贪心算法实现了分数背包问题的求解&#xff0c;核心通过单位价值降序排序和分阶段装入策略实现最优解。首先对Product数组执行双重循环冒泡排序&#xff0c;按wm(价值/重量比)从高到低重新排列物品&#xff1b;随后分两阶段装入&#xff1a;循环…

13. Langchain异步处理:提升应用性能的关键技巧

引言&#xff1a;从"顺序等待"到"并行加速" 2025年某电商平台引入LangChain异步处理后&#xff0c;大促期间订单处理能力提升5倍&#xff0c;系统响应延迟降低70%。本文将基于LangChain的异步架构&#xff0c;详解如何通过并行执行流式处理&#xff0c;让…

ros2-rviz2控制unity仿真的6关节机械臂,探索从仿真到实际应用的过程

文章目录 前言&#xff08;Introduction&#xff09;搭建开发环境&#xff08;Setup Development Environment&#xff09;在window中安装Unity&#xff08;Install Unity in window&#xff09;创建Docker容器&#xff0c;并安装相关软件&#xff08;Create Docker containers…