前端实现elementUi table表格分页

1. 前端进行分页(后端返回所有的数据)

最主要的是对总数据进行分页截取某个部分的数据进行显示

<!-- 关键是对总数据的截取 tableData.slice((currentPage - 1) * pageSize, currentPage * pageSize) -->
<el-table
   :data="tableData.slice((currentPage - 1) * pageSize, currentPage * pageSize)"
   style="width: 100%"
 >
   <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>
 <!-- 分页器 -->
 <div class="block" style="margin-top: 15px">
   <el-pagination
     align="center"
     @size-change="handleSizeChange"
     @current-change="handleCurrentChange"
     :current-page="currentPage"
     :page-sizes="[1, 5, 10, 20]"
     :page-size="pageSize"
     layout="total, sizes, prev, pager, next, jumper"
     :total="tableData.length"
   >
   </el-pagination>
 </div>
 <script>
export default {
  name: "elementui",
  data() {
    return {
      name: "elementUi",
      tableData: [
        {
          date: "2016-05-02",
          name: "第一页",
          address: "上海市普陀区金沙江路 1518 弄",
        },
        {
          date: "2016-05-04",
          name: "第二页",
          address: "上海市普陀区金沙江路 1517 弄",
        },
        {
          date: "2016-05-01",
          name: "第三页",
          address: "上海市普陀区金沙江路 1519 弄",
        },
        {
          date: "2016-05-03",
          name: "第四页",
          address: "上海市普陀区金沙江路 1516 弄",
        },
        {
          date: "2016-05-01",
          name: "第五页",
          address: "上海市普陀区金沙江路 1519 弄",
        },
        {
          date: "2016-05-03",
          name: "第六页",
          address: "上海市普陀区金沙江路 1516 弄",
        },
        {
          date: "2016-05-02",
          name: "第一页",
          address: "上海市普陀区金沙江路 1518 弄",
        },
        {
          date: "2016-05-04",
          name: "第二页",
          address: "上海市普陀区金沙江路 1517 弄",
        },
        {
          date: "2016-05-01",
          name: "第三页",
          address: "上海市普陀区金沙江路 1519 弄",
        }
      ],
      currentPage: 1, // 当前页码
      total: 20, // 总条数
      pageSize: 2, // 每页的数据条数
    };
  },
  methods:{
    //每页条数改变时触发 选择一页显示多少行
    handleSizeChange(val) {
        console.log(`每页 ${val}`);
        this.currentPage = 1;
        this.pageSize = val;
    },
    //当前页改变时触发 跳转其他页
    handleCurrentChange(val) {
        console.log(`当前页: ${val}`);
        this.currentPage = val;
    }
  }
};
</script>

2. 后端分页

前端只需要将对应的页码和每页的条数通过接口传递给后台即可

<el-table
  v-loading="loading"
  :data="tableData"
  :header-cell-style="tableHeadStyle"
>
  <el-table-column type="index" label="序号" align="center" min-width="180" />
  <el-table-column prop="name" label="姓名" align="center" min-width="180" />
  <el-table-column prop="sex" label="性别" align="center" min-width="180" />
  <el-table-column prop="contactPhone" label="联系电话" align="center" min-width="180" />
  <el-table-column prop="skillType" label="技能工种" align="center" min-width="180" />
</el-table>
<pagination
  v-show="total>0"
  :total="total"
  :page.sync="queryParams.page"
  :limit.sync="queryParams.size"
  @pagination="getList"
/>
<script>
export default {
  name: 'InfoAdmin',
  data() {
    return {
      // 列表loading
      loading: false,
      // 列表数据
      tableData: [],
      // 数据总数
      total: 1,
      // 筛选项
      queryParams: {
        page: 1,
        size: 10,
      }
    }
  }
  methods: {
    // 获取列表
    getList() {
      // 通过对象解析的方式获取到页码和每页条数
      const data = { ...this.queryParams, userId: 101 }
      this.loading = true
      getInfoAdmin(data).then(res => {
        console.log(res)
        if (res.code === 0) {
          this.tableData = res.data.list
          this.total = res.data.total
        }
      }).catch(err => {
        console.log(err)
      }).finally(() => {
        this.loading = false
      })
    }
  }
}
</script>
  • 8
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Element UI 是一套基于 Vue.js 的组件库,其中包含了丰富的 UI 组件,比如 Table 表格组件。在使用 Element UI 的 Table 组件进行后端分页时,需要进行以下步骤: 1. 后端准备:首先,后端需要提供一个接口来获取分页数据。这个接口应该包含获取当前页数据的逻辑,同时还需要对分页参数进行处理,比如每页数量、当前页码等。 2. 前端配置:在前端代码中,需要对 Table 组件进行配置。首先,需要设置表格的数据源为后端接口,可以使用 `:data` 属性来设置,例如 `:data="tableData"`。`tableData` 是一个变量,用来存储后端返回的数据。接着,还需要设置表格分页属性,使用 `:pager` 属性来配置,例如 `:pager="true"`。设置为 `true` 表示启用分页功能。 3. 分页参数传递:在请求后端数据时,需要将分页相关的参数传递给后端接口。例如,可以使用 `@load="handleLoad"` 事件来触发加载数据的方法,并在该方法中将分页参数传递给后端接口。 4. 后端返回数据:后端接口收到请求后,根据传递的分页参数进行相应的处理,然后返回包含当前页数据的结果。 5. 数据渲染:前端在接收到后端返回的数据后,可以将数据显示在 Table 组件中。可以通过 `v-for` 指令来循环遍历数据,然后在相应的列上使用插值表达式将数据渲染出来。 通过以上步骤,就可以实现 Element UI Table 的后端分页功能。前端通过配置表格的数据源和分页属性,然后将分页参数传递给后端接口,后端接口根据分页参数处理数据并返回给前端,最后前端将数据渲染显示在 Table 组件中。 ### 回答2: Element UI是一款基于Vue.js的UI组件库,其中包含了很多常用的UI组件,如Table表格)。Element UI Table组件的后端分页是指在数据量较大时,通过与后端进行交互,在前端只展示部分数据,而不是一次性加载所有数据。 要实现Element UI Table的后端分页,需要先获取到后端返回的总数据量,然后根据每页展示的数据量和当前页码向后端发送请求,获取当前页的数据。具体的步骤如下: 1. 在后端实现数据接口:后端应提供一个接口用于获取表格数据。该接口需接收参数:每页展示的数据量、当前页码,并根据这些参数返回对应的数据。 2. 在前端配置Table组件:在前端代码中,配置Table组件,并指定相应的属性,如数据源(data)、每页展示的数据量(page-size)、总数据量(total),以及当前页码(current-page)等。 3. 设置分页:在前端代码中,配置分页组件(Pagination),并指定相应的属性,如总数据量(total)、每页展示的数据量(page-size),以及当前页码(current-page)等。 4. 定义获取数据的方法:在前端代码中,定义一个方法用于向后端发送请求并获取数据。该方法应接收当前页码作为参数,并通过Axios等工具发送请求,传递相应的参数和请求头信息。 5. 分页操作:当用户切换页码时,调用获取数据的方法,并将当前页码作为参数传入,从后端获取数据并更新表格展示的数据。 通过以上步骤,就可以实现Element UI Table的后端分页功能。每次用户切换页码时,都会向后端请求数据,只展示当前页的数据,从而降低了前端的内存和渲染开销。同时,也能提高用户体验,保证了页面的加载速度和性能。 ### 回答3: Element-UI是一个基于Vue.js的组件库,它提供了一系列的UI组件,其中包括了Table组件。 Element-UI的Table组件可以支持前端分页和后端分页两种方式。对于后端分页,我们需要在后端进行相应的处理来返回分页数据。 首先,在前端,我们需要使用Table组件的`data`属性来绑定后端返回的数据列表,并使用`total`属性来绑定后端返回的数据总量。 然后,在后端,我们需要根据前端传递过来的分页参数(如页码、每页条数等)来查询相应的数据,并计算出总量。然后将查询到的数据列表和总量返回给前端。 具体的后端分页实现方式会根据不同的后端技术而有所不同。 例如,对于Java后端,我们可以使用Spring Boot框架来实现后端分页。首先,在后端定义一个Controller,接收前端传递的分页参数,并调用Service层的方法进行数据查询和计算总量。然后将查询到的数据列表和总量封装成一个分页对象,并返回给前端。 ```java @RestController @RequestMapping("/api/table") public class TableController { @Autowired private TableService tableService; @GetMapping("/list") public ResultData<TableData> getList(@RequestParam("pageNumber") int pageNumber, @RequestParam("pageSize") int pageSize) { List<TableItem> dataList = tableService.getDataList(pageNumber, pageSize); int total = tableService.getTotal(); TableData tableData = new TableData(dataList, total); return new ResultData<>(tableData); } } ``` 在Service层,我们可以使用MyBatis等持久层框架进行数据查询,并在查询语句中加入分页逻辑。 ```java @Service public class TableServiceImpl implements TableService { @Autowired private TableMapper tableMapper; @Override public List<TableItem> getDataList(int pageNumber, int pageSize) { PageHelper.startPage(pageNumber, pageSize); return tableMapper.selectDataList(); } @Override public int getTotal() { return tableMapper.selectTotal(); } } ``` 对于其他后端技术,可以根据相应的框架和数据库操作工具来实现后端分页逻辑。 总之,Element-UI的Table组件支持后端分页,我们需要在前端分页参数传递给后端,并在后端根据这些参数进行数据查询和计算总量,然后将查询到的数据列表和总量返回给前端
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值