美文网首页
element-ui+vue-cli3.0系列问题二:表格合并,

element-ui+vue-cli3.0系列问题二:表格合并,

作者: 闪闪发光lucia | 来源:发表于2018-12-07 15:21 被阅读0次

    开发中页面有表格的话,不可或缺的都会涉及一些别表格的合并操作。
    下面来说说我是如何来动态合并表格的行或列的。 点击查看源码

    表格合并

    看图说话


    table.png

    后台传给前台的是一个二维数组形式的数据,遍历这个二维数组,生成多个表格,合理的使用表格的show-header属性,来显示和隐藏表头,然后再合并每个表格。合并表格时用到了列表数据里的length属性,这个字段很重要,属性值是列表的长度。


    length.png

    通过这个length来实现表格动态合并行


    methods.png

    远程排序

    <el-table
      :data="tableData1"
      border
      @sort-change="sortChange"
      :default-sort = "{
        prop: 'date',
        order: 'descending',
      }"
      style="width: 100%">
      <el-table-column
      prop="date"
      label="日期"
      sortable="custom"
      :sort-orders="['ascending', 'descending']"
      width="180">
      </el-table-column>
      <el-table-column
      prop="name"
      label="姓名"
      width="180">
      </el-table-column>
      <el-table-column
      prop="address"
      label="地址">
      </el-table-column>
    </el-table>
    
    private sortChange({ column, prop, order }: any) {
        const defaultSort = {
          prop, // 排序字段
          order, // 排序类型
        };
        // 此处调用接口,并把排序字段和排序类型传给后端
        // ...
      }
    
    1. 对应列是否可以排序,通过添加sortable字段来控制,如果希望是远程排序,则该字段的值设置为'custom';
    2. 排序需要监听 Table 的 sort-change 事件,通过该事件能拿到当前排序的字段和排序的类型;
    3. sort-orders属性设置排序的类型,默认有'ascending','descending',null,分别代表升序、降序、不排序;
    4. default-sort属性设置默认排序字段和默认排序类型

    动态展开某些行

    <el-table
      :data="tableData1"
      row-key="id"
      :row-class-name="setClassName"
      style="width: 100%">
      <el-table-column
      type="expand">
      <template slot-scope="props">
        我是扩展内容:{{props.row.remark}}
      </template>
      </el-table-column>
      <el-table-column
      prop="date"
      label="日期"
      width="180">
      </el-table-column>
      <el-table-column
      prop="name"
      label="姓名"
      width="180">
      </el-table-column>
      <el-table-column
      prop="address"
      label="地址">
      </el-table-column>
    </el-table>
    
    private setClassName({row, index}: any){
        // 通过自己的逻辑返回一个class或者空
        return row.expand ? 'expand' : '';
      }
    
    .expand .el-table__expand-column .cell {
      display: none;
    }
    
    1. 渲染树形数据时,必须要指定 row-key;
    2. 通过 row-class-name 属性来设置行样式;

    element-ui+vue-cli3.0系列问题一:el-upload上传组件
    element-ui+vue-cli3.0系列问题二:表格合并,远程排序,动态展开行
    element-ui+vue-cli3.0系列问题三:el-tooltip实现文本溢出省略号处理

    相关文章

      网友评论

          本文标题:element-ui+vue-cli3.0系列问题二:表格合并,

          本文链接:https://www.haomeiwen.com/subject/axuthqtx.html