摘要:表頭設(shè)計(jì)原理和多叉樹的原理類似,參考了它的展示形式。大家一起交流成長(zhǎng)。
1. 表頭設(shè)計(jì)
原理:
和多叉樹的原理類似,參考了它的展示形式。
表頭說(shuō)明:
如果沒(méi)有孩子節(jié)點(diǎn)就只返回如下一個(gè)字段:
name :名字
如果有孩子節(jié)點(diǎn),就把數(shù)據(jù)加在children里面,層層嵌套,返回字段如下:
name :名字
children : 孩子節(jié)點(diǎn)
數(shù)據(jù)結(jié)構(gòu)格式,參考如下代碼:
headerData:[ { name: "地區(qū)", }, { name: "總數(shù)據(jù)", children: [ { name: "數(shù)據(jù)1", children: [ { name: "數(shù)據(jù)11", children: [ { name: "數(shù)據(jù)111", }, { name: "數(shù)據(jù)112", } ] }, { name: "數(shù)據(jù)12", children: [ { name: "數(shù)據(jù)121", }, { name: "數(shù)據(jù)122", } ] }, { name: "數(shù)據(jù)13", children: [ { name: "數(shù)據(jù)131", }, { name: "數(shù)據(jù)132", } ] }, { name: "數(shù)據(jù)14", }, ] } ] } ];
表頭的寬高方面,前端計(jì)算,后端不用管,按照如下格式返回?cái)?shù)據(jù)即可。
2. 表格數(shù)據(jù)格式每一項(xiàng)按照表頭展示的順序返回,通過(guò)數(shù)組的形式
返回一個(gè)參數(shù):
bodyData:總數(shù)據(jù)
數(shù)據(jù)結(jié)構(gòu)格式參考代碼如下:
bodyData:[ ["地區(qū)最先","數(shù)據(jù)111","數(shù)據(jù)112","數(shù)據(jù)121","數(shù)據(jù)122","數(shù)據(jù)131","數(shù)據(jù)132","數(shù)據(jù)14"], ["地區(qū)","數(shù)據(jù)111","數(shù)據(jù)112","數(shù)據(jù)121","數(shù)據(jù)122","數(shù)據(jù)131","數(shù)據(jù)132","數(shù)據(jù)14"], ["地區(qū)","數(shù)據(jù)111","數(shù)據(jù)112","數(shù)據(jù)121","數(shù)據(jù)122","數(shù)據(jù)131","數(shù)據(jù)132","數(shù)據(jù)14"], ["地區(qū)","數(shù)據(jù)111","數(shù)據(jù)112","數(shù)據(jù)121","數(shù)據(jù)122","數(shù)據(jù)131","數(shù)據(jù)132","數(shù)據(jù)14"], ["地區(qū)","數(shù)據(jù)111","數(shù)據(jù)112","數(shù)據(jù)121","數(shù)據(jù)122","數(shù)據(jù)131","數(shù)據(jù)132","數(shù)據(jù)14"], ["地區(qū)","數(shù)據(jù)111","數(shù)據(jù)112","數(shù)據(jù)121","數(shù)據(jù)122","數(shù)據(jù)131","數(shù)據(jù)132","數(shù)據(jù)14"], ["地區(qū)","數(shù)據(jù)111","數(shù)據(jù)112","數(shù)據(jù)121","數(shù)據(jù)122","數(shù)據(jù)131","數(shù)據(jù)132","數(shù)據(jù)14"], ["地區(qū)","數(shù)據(jù)111","數(shù)據(jù)112","數(shù)據(jù)121","數(shù)據(jù)122","數(shù)據(jù)131","數(shù)據(jù)132","數(shù)據(jù)14"], ["地區(qū)","數(shù)據(jù)111","數(shù)據(jù)112","數(shù)據(jù)121","數(shù)據(jù)122","數(shù)據(jù)131","數(shù)據(jù)132","數(shù)據(jù)14"], ["地區(qū)最后","數(shù)據(jù)111","數(shù)據(jù)112","數(shù)據(jù)121","數(shù)據(jù)122","數(shù)據(jù)131","數(shù)據(jù)132","數(shù)據(jù)14"], ]3. 效果
如上表頭與表格數(shù)據(jù)代碼生成的效果如圖:
語(yǔ)法高亮用到 codemirror 插件
/** * 遞歸遍歷 格式化數(shù)組 * @param { Array } paramArr 目標(biāo)數(shù)組 * @param { Number } level 層級(jí) */ export function formatArray(paramArr, level) { let levelFirst = Number(level) const arr = [] let childArr = [] for (let i = 0; i < paramArr.length; i++) { let obj = {} for (let j in paramArr[i]) { if (j != "children") { obj[j] = paramArr[i][j] } obj["level"] = levelFirst obj["width"] = getLeafCountTree(paramArr[i]) if (!paramArr[i].children) { obj["childrenNumber"] = 0 // LeafNode: 葉子節(jié)點(diǎn)就是樹中最底段的節(jié)點(diǎn) // obj["isLeafNode"] = true } else { // obj["isLeafNode"] = false obj["childrenNumber"] = paramArr[i].children.length } } arr.push(obj) if (paramArr[i].children) { let lev = Number(levelFirst) + 1 childArr = childArr.concat(formatArray(paramArr[i].children, lev)); } } let endArr = arr.concat(childArr) return endArr }
/** * 獲取 節(jié)點(diǎn)的所有葉子節(jié)點(diǎn)個(gè)數(shù) * @param {Object} json Object對(duì)象 */ export function getLeafCountTree(json) { if(!json.children){ return 1; }else{ var leafCount = 0; for(var i = 0 ; i < json.children.length ; i++){ leafCount = leafCount + getLeafCountTree(json.children[i]); } return leafCount; } }
// json對(duì)對(duì)象字符串的格式化,美化 export function jsonFromat (text_value){ if(text_value == ""){ alert("不能為空"); return false; } else { var json=eval("(" + text_value + ")"); text_value=JSON.stringify(json); var res=""; for(var i=0,j=0,k=0,ii,ele;i 5. 效果鏈接:復(fù)雜表頭 json 數(shù)據(jù)格式驗(yàn)證:
{{l.name}} {{ x | valueFromt }} 提交 效果鏈接如下:
復(fù)雜表格設(shè)計(jì)數(shù)據(jù)格式
動(dòng)態(tài)效果:
最后對(duì) 全棧開發(fā) 有興趣的朋友可以掃下方二維碼關(guān)注我的公眾號(hào) —— 愛寫bugger的阿拉斯加
分享 web 開發(fā)相關(guān)的技術(shù)文章,熱點(diǎn)資源,全棧程序員的成長(zhǎng)之路。
大家一起交流成長(zhǎng)。
只要關(guān)注公眾號(hào)并回復(fù) 福利 便送你六套視頻資源: Python、Java、Linux、Go、vue、react、javaScript
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/96361.html
摘要:下的表格狂想曲前言歡迎大家閱讀從零開始的組件開發(fā)之路系列第一篇,表格篇。北京小李中的每一個(gè)元素是一列的配置,也是一個(gè)對(duì)象,至少應(yīng)該包括如下幾部分表頭該列使用行中的哪個(gè)進(jìn)行顯示易用性與通用性的平衡易用性與通用性互相制衡,但并不是絕對(duì)矛盾。 React 下的表格狂想曲 0. 前言 歡迎大家閱讀「從零開始的 React 組件開發(fā)之路」系列第一篇,表格篇。本系列的特色是從 需求分析、API 設(shè)...
摘要:遵循特定規(guī)則,利用操作符,終止節(jié)點(diǎn)和其他非終止節(jié)點(diǎn),構(gòu)造新的字符串非終結(jié)符是表示字符串的樹的內(nèi)部節(jié)點(diǎn)。語(yǔ)法中的生產(chǎn)具有這種形式非終結(jié)符終結(jié),非終結(jié)符和運(yùn)算符的表達(dá)式語(yǔ)法的非終結(jié)點(diǎn)之一被指定為根。 大綱 基于狀態(tài)的構(gòu)建 基于自動(dòng)機(jī)的編程 設(shè)計(jì)模式:Memento提供了將對(duì)象恢復(fù)到之前狀態(tài)的功能(撤消)。 設(shè)計(jì)模式:狀態(tài)允許對(duì)象在其內(nèi)部狀態(tài)改變時(shí)改變其行為。 表驅(qū)動(dòng)結(jié)構(gòu)* 基于語(yǔ)法的構(gòu)...
摘要:是的擴(kuò)展格式和缺省的數(shù)據(jù)庫(kù)引擎。數(shù)據(jù)庫(kù)引擎都是造就靈活性的技術(shù)的直接產(chǎn)品,這項(xiàng)技術(shù)就是。估計(jì)這個(gè)插件式數(shù)據(jù)庫(kù)引擎的模型甚至能夠被用來(lái)為創(chuàng)建本地的提供器。能夠讓你在表格這一層指定數(shù)據(jù)庫(kù)引擎,所以它們有時(shí)候也指的是。 數(shù)據(jù)庫(kù)引擎介紹MySQL數(shù)據(jù)庫(kù)引擎取決于MySQL在安裝的時(shí)候是如何被編譯的。要添加一個(gè)新的引擎,就必須重新編譯MYSQL。在缺省情況下,MYSQL支持三個(gè)引擎:ISAM、M...
閱讀 4103·2021-09-22 10:02
閱讀 3435·2019-08-30 15:52
閱讀 3120·2019-08-30 12:51
閱讀 826·2019-08-30 11:08
閱讀 2132·2019-08-29 15:18
閱讀 3159·2019-08-29 12:13
閱讀 3663·2019-08-29 11:29
閱讀 1964·2019-08-29 11:13