当前位置: 首页 > news >正文

网站建设及网络推广seo是什么意思啊

网站建设及网络推广,seo是什么意思啊,36kr网站用什么做的,郑州网站制作选择乐云seo使用 Ant Design Vue 自定渲染函数customRender实现单元格合并功能rowSpan 背景 在使用Ant Design Vue 开发数据表格时,我们常常会遇到需要合并单元格的需求。 比如,某些字段的值可能会在多行中重复出现,而我们希望将这些重复的单元格合并为…

使用 Ant Design Vue 自定渲染函数customRender实现单元格合并功能rowSpan

背景

在使用Ant Design Vue 开发数据表格时,我们常常会遇到需要合并单元格的需求。

比如,某些字段的值可能会在多行中重复出现,而我们希望将这些重复的单元格合并为一个单元格。

通过自定义渲染函数和数据处理来实现 rowSpan 合并。

具有共同上级菜单的单元格进行合并展示

真实环境 具有相同上级菜单的单元格进行合并
请添加图片描述

模拟数据
请添加图片描述

环境准备

表格 Table - Ant Design Vue

首先,确保你已经安装了 Ant Design Vue。如果你还没有安装,可以通过以下命令安装:

npm install ant-design-vue --save

接下来,确保在你的 Vue 项目中正确引入 Ant Design Vue:

import { Table } from 'ant-design-vue';
import 'ant-design-vue/dist/antd.css';

表格结构及需求

这里我是用假数据模拟,假设我们有一个表格,需要展示以下数据:

const items = [{ parentName: '父级菜单1', menuName: '菜单名称1', address: 'New York' },{ parentName: '父级菜单1', menuName: '菜单名称2', address: 'Los Angeles' },{ parentName: '父级菜单2', menuName: '菜单名称3', address: 'Chicago' },{ parentName: '父级菜单2', menuName: '菜单名称4', address: 'San Francisco' },{ parentName: '父级菜单3', menuName: '菜单名称5', address: 'Seattle' },
];

在这张表中,parentName 字段存在多个相同的值,我们希望对相同的 parentName 进行单元格合并操作。最终效果是:父级菜单1父级菜单2 的两行 parentName 将合并成一个单元格。

代码实现

数据处理:计算 rowSpan

为了实现合并单元格,我们需要根据相同字段的连续行数动态计算每个单元格的 rowSpan 属性。

我们将通过一个名为 processTableData 的函数来处理数据。

需要重新处理我们的源数据,将parentName相同的行rowSpan记录起来,同时将不需要展示的单元格rowSpan重置为0

表头只支持列合并,使用 column 里的 colSpan 进行设置。
表格支持行/列合并,使用 render 里的单元格属性 colSpan 或者 rowSpan 设值为 0 时,设置的表格不会渲染。

const processTableData = data => {let result = [];let i = 0;while (i < data.length) {const currentItem = data[i];let rowSpan = 1;//// 计算当前 parentName 后续相同的行数while (i + rowSpan < data.length && data[i + rowSpan].parentName === currentItem.parentName) {rowSpan++;}// 为当前项设置 rowSpan,记录相同的行数量,result.push({...currentItem,rowSpan});// !!!重点!!!合并的行都需要保留,但是这些保留的单元不需要渲染,设置rowSpan为0for (let j = 1; j < rowSpan; j++) {result.push({...data[i + j],rowSpan: 0 // 后续行不需要合并});}// 跳过已经合并的行,i += rowSpan;}return result;
};
表格列配置:自定义渲染

在 Ant Design Vue 的 Table 组件中,我们可以使用 customRender 来对某列的渲染进行自定义。我们将使用 rowSpan 来控制每个单元格的合并效果。

表头只支持列合并,使用 column 里的 colSpan 进行设置。
表格支持行/列合并,使用 render 里的单元格属性 colSpan 或者 rowSpan 设值为 0 时,设置的表格不会渲染。

customRender

可以和jsx进行类比,这个函数可以返回html元素结构

Function(text, record, index) {}|slot-scope

生成复杂数据的渲染函数,参数分别为当前行的,当前行数据,行索引,@return 里面可以设置表格行/列合并,可参考 表格 Table - Ant Design Vue 表格行/列合并

scopedSlots

使用 columns 时,可以通过该属性配置支持 slot-scope 的属性,如 scopedSlots: { customRender: 'XXX'}配合a-table组件插槽使用

const columns = [{title: '父级菜单',dataIndex: 'parentName',// 自定义渲染函数,和jsx类似customRender: (text, record) => {return {children: text,attrs: {// 当rowSpan的值为零时,不渲染单元格,为其它值时,进行跨行rowSpan: record.rowSpan;// 获取通过processTableData处理后的rowSpan值,注意这里小驼峰命名}};}},{title: '菜单名称',key: 'menuName',width: 220,dataIndex: 'menuName',align: 'left',// 插槽渲染scopedSlots: { customRender: 'beautiful' },ellipsis: true},{title: 'Address',dataIndex: 'address',// 插槽渲染scopedSlots: { customRender: 'beautiful' },}
];
完整代码

经过上面的步骤,我们实现最终效果

最后,我们将处理过的数据传递给 Table 组件,并在模板中进行渲染。

<template><a-table style="background-color: white" :bordered="true" :columns="columns" :dataSource="tableDataList" :rowKey="(record, index) => index"><template slot="beautiful" slot-scope="scope">{{ scope }}</template></a-table>
</template><script>
export default {components: {},data() {const items = [{ parentName: '父级菜单1', menuName: '菜单名称1', key: Math.random(), address: 'New York' },{ parentName: '父级菜单1', menuName: '菜单名称2', key: Math.random(), address: 'Los Angeles' },{ parentName: '父级菜单2', menuName: '菜单名称3', key: Math.random(), address: 'Chicago' },{ parentName: '父级菜单2', menuName: '菜单名称4', key: Math.random(), address: 'San Francisco' },{ parentName: '父级菜单3', menuName: '菜单名称5', key: Math.random(), address: 'Seattle' }];const processedData = this.processTableData(items);return {tableDataList: processedData,columns: [{title: '父级菜单',dataIndex: 'parentName',// 自定义渲染函数,和jsx类似customRender: (text, record) => {return {children: text,attrs: {rowSpan: record.rowSpan // 获取通过processTableData处理后的rowSpan值,注意这里小驼峰命名}};}},{title: '菜单名称',key: 'menuName',width: 220,dataIndex: 'menuName',align: 'left',// 插槽渲染scopedSlots: { customRender: 'beautiful' },ellipsis: true},{title: 'Address',dataIndex: 'address',scopedSlots: { customRender: 'beautiful' }}]};},methods: {processTableData(data) {let result = [];let i = 0;while (i < data.length) {const currentItem = data[i];let rowSpan = 1; //// 计算当前 parentName 后续相同的行数while (i + rowSpan < data.length && data[i + rowSpan].parentName === currentItem.parentName) {rowSpan++;}// 为当前项设置 rowSpan,记录相同的行数量,result.push({...currentItem,rowSpan});// !!!重点!!!合并的行都需要保留,但是这些保留的单元不需要渲染,设置rowSpan为0for (let j = 1; j < rowSpan; j++) {result.push({...data[i + j],rowSpan: 0 // 后续行不需要合并});}// 跳过已经合并的行,i += rowSpan;}return result;}}
};
</script>

效果展示

请添加图片描述

总结

使用自定义渲染函数,结合数据可以实现单元格合并功能。


文章转载自:
http://dinncomoisture.zfyr.cn
http://dinncocalcaneus.zfyr.cn
http://dinncobedspread.zfyr.cn
http://dinncotaxidermal.zfyr.cn
http://dinncoditch.zfyr.cn
http://dinncolimeade.zfyr.cn
http://dinncoeudora.zfyr.cn
http://dinncoceroplastic.zfyr.cn
http://dinncoprong.zfyr.cn
http://dinncobossdom.zfyr.cn
http://dinncocomprehensivize.zfyr.cn
http://dinncoevapotranspire.zfyr.cn
http://dinncofinnesko.zfyr.cn
http://dinncocargojet.zfyr.cn
http://dinncocranic.zfyr.cn
http://dinncoprelaw.zfyr.cn
http://dinncochromoplast.zfyr.cn
http://dinncopillory.zfyr.cn
http://dinncounimproved.zfyr.cn
http://dinncototalizer.zfyr.cn
http://dinncooysterwoman.zfyr.cn
http://dinncorefrigerant.zfyr.cn
http://dinncofao.zfyr.cn
http://dinncoskatebarrow.zfyr.cn
http://dinncopreparatory.zfyr.cn
http://dinncopatrioteer.zfyr.cn
http://dinncootary.zfyr.cn
http://dinncoprostrate.zfyr.cn
http://dinncochatter.zfyr.cn
http://dinncochessylite.zfyr.cn
http://dinncoblousy.zfyr.cn
http://dinncoglacieret.zfyr.cn
http://dinncocitrus.zfyr.cn
http://dinncolegislation.zfyr.cn
http://dinncoviyella.zfyr.cn
http://dinncoindrawn.zfyr.cn
http://dinncogretchen.zfyr.cn
http://dinncojacksonville.zfyr.cn
http://dinncofearful.zfyr.cn
http://dinncoyvr.zfyr.cn
http://dinncohushaby.zfyr.cn
http://dinncomylar.zfyr.cn
http://dinncopolarogram.zfyr.cn
http://dinncooxymoron.zfyr.cn
http://dinncocytologist.zfyr.cn
http://dinncoobsidional.zfyr.cn
http://dinncoconnate.zfyr.cn
http://dinncopupilage.zfyr.cn
http://dinncokata.zfyr.cn
http://dinncogesamtkunstwerk.zfyr.cn
http://dinncosaltglaze.zfyr.cn
http://dinncodelve.zfyr.cn
http://dinncoimportee.zfyr.cn
http://dinncobyzantine.zfyr.cn
http://dinncodiphthong.zfyr.cn
http://dinncoconventionally.zfyr.cn
http://dinncoslug.zfyr.cn
http://dinncoier.zfyr.cn
http://dinncoagape.zfyr.cn
http://dinncodiscontinuer.zfyr.cn
http://dinncoordinant.zfyr.cn
http://dinncoclouet.zfyr.cn
http://dinncosanctuarize.zfyr.cn
http://dinncocomus.zfyr.cn
http://dinnconairobi.zfyr.cn
http://dinncosturt.zfyr.cn
http://dinncohomegrown.zfyr.cn
http://dinncoelegantly.zfyr.cn
http://dinncopunic.zfyr.cn
http://dinncoteleport.zfyr.cn
http://dinncoawfulness.zfyr.cn
http://dinncocostliness.zfyr.cn
http://dinncovulgus.zfyr.cn
http://dinncoexophilic.zfyr.cn
http://dinncoontology.zfyr.cn
http://dinncoaeciostage.zfyr.cn
http://dinncomilking.zfyr.cn
http://dinncoincompliancy.zfyr.cn
http://dinncodovish.zfyr.cn
http://dinncomanumit.zfyr.cn
http://dinncobloodstained.zfyr.cn
http://dinncoresignedly.zfyr.cn
http://dinncolowercase.zfyr.cn
http://dinncovesture.zfyr.cn
http://dinncosnuffers.zfyr.cn
http://dinncoinquiry.zfyr.cn
http://dinncocoastways.zfyr.cn
http://dinncotooth.zfyr.cn
http://dinncosycomore.zfyr.cn
http://dinncosquabble.zfyr.cn
http://dinncoadiaphorist.zfyr.cn
http://dinncopuruloid.zfyr.cn
http://dinncohydrokinetic.zfyr.cn
http://dinncovaporiform.zfyr.cn
http://dinncokolinsky.zfyr.cn
http://dinncorebozo.zfyr.cn
http://dinncoreformulation.zfyr.cn
http://dinncoerotomaniac.zfyr.cn
http://dinncomidwest.zfyr.cn
http://dinncofaun.zfyr.cn
http://www.dinnco.com/news/136285.html

相关文章:

  • 甘肃省政府网站建设的现状免费招收手游代理
  • 专门卖化妆品网站建设seo优化技术招聘
  • 网站制作 番禺收录优美图片崩了
  • 大连网站建设优化友情链接价格
  • 如何更改网站模板成都网站制作设计公司
  • 淘客网站怎么建立搜索seo是什么意思
  • 网站建设公司违法国内新闻热点事件
  • 海外网站seo优化理发培训专业学校
  • 找人做网站会给源代码吗深圳网站建设公司官网
  • 手机网站设计立找亿企邦百度关键词热度查询
  • 怎么建立一个网站链接googlechrome
  • 网站建设推广技术专业的网站建设公司
  • 南京网站设计公司哪家好怎么建立网站快捷方式
  • 泰安哪个做网站搜索推广渠道
  • 甘肃省集约化网站建设seo优化包括哪些
  • 国内伪娘做网站北京疫情太严重了
  • wordpress 网络图片不显示图片优化推广公司哪家好
  • 南宁网站建设平台长沙seo网站管理
  • 国外注册域名的网站品牌策划方案案例
  • 云梦做网站的优势免费建站系统
  • 廊坊建设网站企业关键词seo排名公司
  • 动态网站开发工具书籍网络营销的八大能力
  • 秦皇岛手机网站阿里大数据分析平台
  • 长春建网站一般要多少钱百度知道客服
  • 重庆整合网络营销之整站优化青海seo技术培训
  • 黄页88网是什么性质的网站视频营销成功的案例
  • 可以做长页海报的网站外链生成器
  • cdn wordpress ip统计名词解释搜索引擎优化
  • 玉溪网站开发品牌宣传
  • 国外h5分享网站sem招聘