说点什么

一个管理端的系统,最常用的是数据表格及分页。

这里我记录一下使用QTable 数据表及QPagination组件来实现想要的数据表格及分页的过程。

可直接跳至文章末尾,看实现效果:传送门。

QTable 数据表

首先,从文档:QTable中能看到很多种表格样式,找到一款与我们的项目UI效果相似的来使用:

示例

title="Treats"

:data="data"

:columns="columns"

row-key="name"

:selected-rows-label="getSelectedString"

selection="multiple"

:selected.sync="selected"

>

methods: {

getSelectedString () {

return '' // 不返回空时,table自带的左下角显示为默认的文字

}

}

示例中,我将selected-rows-label绑定的方法”getSelectedString“的返回值改为了””,因为我们这里不需要表格左下角显示选中数据的信息。

详细的代码不再粘贴,可以在上面的示例中打开查看。

从示例中,可以看到,quasar table默认的分页是如下:

实现table默认的分页

实现代码:

title="Treats"

:data="data"

:columns="columns"

row-key="name"

:selected-rows-label="getSelectedString"

selection="multiple"

:selected.sync="selected"

:pagination.sync="pagination"

@request="onRequest"

>

data中在上面的示例中增加:

pagination: {

sortBy: 'desc',

descending: false,

page: 1,

rowsPerPage: 10,

rowsNumber: 0 // 总共数据条数

},

methods:

onRequest (props) {

const { page, rowsPerPage, rowsNumber } = props.pagination

// console.log(`获取page: ${page} ${rowsPerPage}`)

this.pagination.page = page

if (rowsPerPage === 0) {

// rowsPerPage 为0,表示一页显示全部数据

this.pagination.rowsPerPage = rowsNumber

} else {

this.pagination.rowsPerPage = rowsPerPage

}

this.getTableData()

},

getTableData () {

service({

url: '/admin/xxxxxx',

method: 'get',

params: {

pageIndex: this.pagination.page, // 页码

pageSize: this.pagination.rowsPerPage, // 每页数量

keywords: this.keywords // 查询参数keywords

},

responseType: 'json', // default

responseEncoding: 'utf8' // default

})

.then(response => {

const rtn = response.data

this.pagination.rowsNumber = rtn.data.total

if (rtn.code === 200) {

this.data = rtn.data.records

} else {

this.$q.notify({

message: rtn.message,

timeout: 1500,

type: 'negative',

position: 'top-right' // 'top', 'left', 'bottom-left' etc

})

}

})

},

这里值得一提的是,quasar table默认的分页,可以切换每页的数据条数rowsPerPage,切换这个的时候,有一个选项是all, 是选中全部:

而此时返回的rowsPerPage是0,所以,当 rowsPerPage === 0 时,onRequest方法中,应该将总共的数据条数赋值给rowsPerPage。具体请查看文档:QTable API

QPagination 组件

Pagination从该文档中能看到很多分页的样式,同样是找到一款与我们的项目UI效果相似的来使用:

示例 Pagination: 分页多的页码隐藏为省略号

自定义 table分页

但是依然不够用,因为UI效果中,分页的左边显示数据条数信息,中间是类似上面示例那种分页多的页码隐藏为省略号,右边显示跳转至n页,要求输入页码,按下enter方可跳转。

这个效果很好实现,结合table的v-slot:bottom即可:

实现示例请查看:Quasar Table: 自定义分页样式

实现代码:

title="table 自定义分页"

:data="data"

:columns="columns"

row-key="name"

selection="multiple"

:selected.sync="selected"

:loading="loading"

:pagination.sync="pagination"

@update:selected="getSelected"

class="table"

>

{{ pagination.rowsPerPage }}条/页 共

{{ pagination.rowsNumber }}

条数据

v-model="pagination.page"

:max="pages"

:max-pages="5"

ellipsess

:direction-links="true"

@input="changePagination"

>

跳至

outlined

v-model="toPage"

class="pagination-input"

@input="changeToPage"

@keyup.enter.native="refreshTableData"

>

data中在最上面的示例中增加:

loading: true,

pages: 10, // 数据总页数

toPage: '', // 跳转至

methods

changePagination (val) {

this.selected = []

console.log(`changePagination: ${val}`)

this.pagination.page = val

this.loading = true

this.getTableData()

},

changeToPage (val) {

this.selected = []

var r = /^\+?[1-9][0-9]*$/

if (r.test(val) && parseInt(val) <= this.pages) {

// 输入正整数 且 小于最大页数

// console.log(`input toPage: ${val} 是一个正整数`)

} else {

this.toPage = ''

}

},

getSelected (newSelected) {

console.log(`获取selected: ${JSON.stringify(this.selected)}`)

console.log(`getSelected获取newSelected: ${JSON.stringify(newSelected)}`)

this.selected = newSelected

},

refreshTableData (){

if (this.toPage !== '') {

this.pagination.page = parseInt(this.toPage)

this.loading = true

this.getTableData()

}

},

getTableData(){

this.loading = true

//此处应为接口请求数据 不再粘贴

}

},

实现效果

如图:

文档

h5分页样式 css,【前端技术】Quasar Table: 自定义分页样式相关推荐

  1. vue+elementui表格前端导出excel以及自定义导出样式

    vue+elementui表格前端导出excel以及自定义导出样式 项目遇到前端自己导出表格,我自己把后端给我的数据处理了一波,合并重复列啊,以及表头合并啊.可没想到导出竟然也要前端自己来弄,于是乎请 ...

  2. CSS如何设置html table表格边框样式

    CSS如何设置table表格边框样式 对table设置css样式边框,分为几种情况: 1.只对table设置边框 2.对td设置边框 3.对table和td技巧性设置表格边框 4.对table和td设 ...

  3. table自定义表格样式

    前言: 自定义表格样式,有一些自定义的需求,整理成通用样式就可以复用了 1,table表格每一列可以自定义宽度 2,table表格每一列中的每一项超出宽度不换行并显示省略号... <!DOCTY ...

  4. table自定义滚动条样式

    效果图: css代码: //table样式 .home_table{width: 90%;border-collapse: separate;border-spacing: 20px 10px;mar ...

  5. HTML CSS 兼容所有浏览器的自定义鼠标样式

    2019独角兽企业重金招聘Python工程师标准>>> 自定义鼠标样式,格式: css:{cursor:url('绝对路径的图片(格式:cur,ico)'),-moz-zoom-ou ...

  6. android 滚动条自定义样式,IScroll的使用-方向键绑定自定义滚动条样式

    之前在webkit上开发一个滚动控件,需要完成的是一段文字,上下键可以滚动,且自定义滚动条.第一想法就是浏览器原生overflow:scroll,且webkit支持自定义滚动条样式: webkit自定 ...

  7. 前端实现elementUi table表格分页

    1. 前端进行分页(后端返回所有的数据) 最主要的是对总数据进行分页截取某个部分的数据进行显示 <!-- 关键是对总数据的截取 tableData.slice((currentPage - 1) ...

  8. element组件库中table自定义分页效果

    1.在data中设置初始值 // 页数 页码search: { offset: 1, // 当前页limit: 10, // 条数total:0, //总数}, 2.设置获取后的数据分配 :data= ...

  9. 百度前端技术学院2017学习总结

    一.前言 百度的前端技术学院IFE,2016年就听说了,当时自己也报名,还组成队伍了,不过自己一个任务也没完成就结束了,遗憾... 关注了IFE,知道2017年2月有新的一期培训,于是一直在等着报名, ...

最新文章

  1. 字符串面试题(一)字符串逆序
  2. 亿级商城计价中心 - 从容应对复杂场景价格计算
  3. LiDAR-Camera Fusion for 3D Reconstruction
  4. java常考设计模式_java笔试常考的几种设计模式
  5. 一位资深程序员大牛给Java初学者的学习建议
  6. element 保存 点击链接_保存微信表情!
  7. oracle11g怎样进行闪回,模拟Oracle11g下用Flashback Data Archive进行恢复的若干场景
  8. 终于搞定电子专利网上申请了
  9. 固态硬盘(SSD)——NAND闪存芯片(颗粒)QLC、SLC、MLC、TLC
  10. 2016年年终总结--勿忘初心
  11. Oracle9i数据库Data Guard实施及维护手册
  12. 三做一年级算术题-吐槽挖雷
  13. KTV信息管理系统+点歌系统(WPF)
  14. Java为图片加水印
  15. 使用 Scrapy + Selenium 爬取动态渲染的页面
  16. 感恩节 今天,留一天时间感谢自己
  17. 51单片机仿真例程-双机串行通信
  18. 初识大数据--Hadoop大数据平台架构与实践
  19. 英语单词:flight; fly
  20. Docker容器化技术

热门文章

  1. Windows下redis修改端口号无效
  2. 编写book.java_Java集合框架上机练习题:编写一个Book类,该类至少有name和price两个属性。该类要实现Comparable接口,在接口的compareTo()方法........
  3. 前端中关于下载文件问题
  4. 【Linux】限制进程的CPU使用率
  5. 跨平台应用开发进阶(四十六)webview方式嵌套H5应用加载慢解决方案
  6. 怎样做需求调研:研讨会
  7. 优酷土豆合而不同 土豆逐渐边缘化显尴尬
  8. 怎么采集can总线的数据?
  9. Epoll之ET、LT模式
  10. 100V输出12V/10A,5V/3.1ADC-DC异步降压芯片