vue + element-ui Table的數據多選,多頁選擇數據回顯,分頁記錄保存選中的數據。

  業務的須要:我要對與會人員勾選,記錄所選的與會人員,而且點擊到別的頁面上時也要記錄所勾選的。第一次嘗試,每次點擊下一頁數據都會清空。而後我就去element ui官網查看了api.實現以下:數據庫

在table必定要定義如下事件和列表屬性:api

  一、row-key,數組

  二、reserve-selectionui

  handleSelectionChange這個事件的做用是我保存勾選數據的。this

 <el-table @selection-change="handleSelectionChange" :row-key="getRowKeys">
  ......
 </el-table>

 

 

在data的return中定義:spa

getRowKeys(row) {
    return row.id;
},
由於我數據庫中有id這個字段,因此前臺row裏面有id做爲惟一標識

由於使用了上面的表的屬性,在配合下面的列屬性:reserve-selectioncode

<el-table-column type="selection" :reserve-selection="true" width="40" align="center">
</el-table-column>

type必須是selection。orm

由於要把勾選的數據傳到後臺因此在methods定義:blog

handleSelectionChange(val) {
    this.multipleSelection = val;//勾選放在multipleSelection數組中
},

想要數據本身在multipleSelection數組中拿。這時基本結束了,功能實現了。事件

再說下數據的回顯:

  先介紹下回顯核心:

  

 rowMultipleChecked() {
   if(this.addForm.mtParticipantsId != null){//這裏我先判斷從後臺查的與會人員id的集合有沒有 否則下面length屬性會報錯。
       for (let j = 0; j < this.addForm.mtParticipantsId.length; j++) {//這裏我用到了雙重for循環 this.pageUser這是全部人員信息
           for (let i = 0; i < this.pageUser.length; i++) {
                if (this.addForm.mtParticipantsId[j] == this.pageUser[i].id) {
                    if(this.$refs.bkUserTable!=undefined){//解決下面用bkUserTable不報錯 bkUserTable我是在table ref定義的
                        this.$refs.bkUserTable.toggleRowSelection(this.pageUser[i], true);//這個就是回顯的核心
                    }
                }
            }
        }
    }
 },

另外這個方法不能直接調用,會有問題的,應該是執行順序有關吧。在這裏我用到了定時器:(打開彈框後在調用這個方法)

openbkPUser() {
     this.getNodeByDeptUser();
     this.form_title = "與會人員信息";
     if (this.stateSave != "2") {
       this.dialogFormVisible3 = true;
       setTimeout(() => {
       this.rowMultipleChecked();
       }, 500)
     }
},
相關文章
相關標籤/搜索