微信小程序:動態表格實現,表頭單元格數據完全從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.pswp.cn/pingmian/76680.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/76680.shtml
英文地址,請注明出處:http://en.pswp.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…