Element UI表格-單元格合并

轉載博客--Evermenot(已親自驗證有效)

在使用element-ui 的表格式涉及到了單元格合并問題,實際工作中數據多是從后臺獲取的,很顯然數據不是一成不變的,所以就要根據數據的變化動態的合并單元格,動態動態動態,我TM不會啊,嘗試合并一直出現這樣那樣的問題,不會還這么多借口渣渣

去問了下度娘,發現類似問題不是很多,這特么不正常啊,果然是我太渣o(╥﹏╥)o ,但總算找到兩個總結記錄下吧,萬一忘了~~~~

好了,切入正題:

問題場景:
  例如一個時間段下對應多行數據,這就不免就涉及到了單元格合并

單元格合并主要思路大致為:
  1. 為每一個時間段下的 每一行 數據中都添加上對應的時間段數據
  2. 設定一個數組來存放要合并的格數,同時還要設定一個變量來記錄,當時間段不同時數據的索引
  3. 遍歷表格數據

貼代碼:
  1. data綁定的為表格數據、span-method綁定的為合并單元格的方法

image

  2. 遍歷表格數據 最終輸出的結果為 spanArr = [3, 0, 0, 2, 0, 0......]的形式,3代表當前單元格合并多少行, 0代表不合

image
image

合并完單元格鼠標放上去的高亮顯示問題:
  問題場景:合并完單元格后,假定此時某個時間段對應的多行數據,鼠標放上其中的某一行時,只是該行高亮顯示,而不是高亮顯示所有行(所有要解決下)

修改完要達到的效果:   (這樣是不是清晰些了||

image

代碼:
  1. 綁定element-ui里的鼠標進入和離開單元格的方法

image

  2. 遍歷表格數據,為每一條數據添加一個index屬性用來標識每行數據,最后輸出結果格式為 sameRowArr = [[0, 1, 2, 3], [4, 5, 6], [7, 8, 9],......]
  sameRowArr中的每一項代表,在一個條件下的數據(如一個時間段等),代碼中的sIdx是用來控制數組的下標,條件變化sIdx +1

  
image

3.最后是實現效果的代碼(鼠標移上及移除即可實現動態添加及移除類名)  (row_class為在style標簽內定義的css樣式)
   此處關鍵點為:a. 在cellMouseEnter事件里 遍歷sameRowArr,
          b. 參數row里包含該整行數據,使用該行中實現存好的索引,在sameRowArr中的每一項里搜索
          c. 存在即將sameRowArr的子數組賦值給一個全局數據curRowArr,
          d. 再在tableRowClassName方法中,循環curRowArr數組
          e. 行號與子數組中存的行數相同即為該行添加一個類名(所以相同條件下的多行數據都會被添加上相同類名,即可解決高亮顯示不全問題)

image
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容