表格合并操作,表格单项如何合并

  表格合并操作,表格单项如何合并

  本文主要详细介绍vue的表格合并功能。本文中的示例代码非常详细,具有一定的参考价值。感兴趣的朋友可以参考一下。

  本文分享了vue的表格合并功能的具体代码,供大家参考。具体内容如下

  1、背景

  有数据表是vue自己渲染的,但从整体考虑,还是需要合并列信息相同的单元格。

  随着vue的使用,我认为MVVM是数据驱动的,所以我考虑操纵模型,而不是在渲染数据后做DOM操作。当然,我还是需要基本的CSS。因此,这种方法对所有人都有效

  数据驱动的框架是有效的,比如Angular和React。最终实现效果如下:

  2、思路

  最初的范式是这样的:

  桌子

  四羟乙基己二酰胺

  tr

  Th设备/th

  工作订单/th

  Th产品型号/th

  Th计划/实际/th

  Th状态/th

  Th估计生产数量/th

  /tr

  /thead

  在需要分行下载处加上

  tr v-for=测试数据中的项目

  td{{ item.equipmentName }}/td

  td{{ item.doCode}}/td

  td{{ item.materialCode}}/td

  td{{ item.productionNum}}/td

  td{{ item.status}}/td

  td{{ item.pNum}}/td

  /tr

  /tbody

  /表格

  先拿正常的表进行测试。原生td标记具有rowspan属性以支持单元格行合并。属性值是指向下合并了多少行,实际上相当于在这一行向下加了几个单元格。

  因为,如果下一行要渲染的话,会被挤下去。因此,下面的合并单元格应该被显示隐藏:无;控制css就好。

  因此,每个td标签需要有两个属性值,rowspan和display,以控制合并的行数和是否显示每个单元格。代码变成这样。

  桌子

  四羟乙基己二酰胺

  tr

  Th设备/th

  工作订单/th

  Th产品型号/th

  Th计划/实际/th

  Th状态/th

  Th估计生产数量/th

  /tr

  /thead

  在需要分行下载处加上

  tr v-for=测试数据中的项目

  TD:rowspan= item . equipment name span :class= { hidden:item . equipment name dis } { { item . equipment name } }/TD

  TD:rowspan= item . docodespan :class= { hidden:item . docodedis } { { item . docode } }/TD

  TD:rowspan= item . materialcodespan :class= { hidden:item . materialcodedis } { { item . materialcode } }/TD

  TD:rowspan= item . production numspan :class= { hidden:item . production numdis } { { item . production num } }/TD

  TD:rowspan= item . status span :class= { hidden:item . status dis } { { item . status } }/TD

  TD:rowspan= item . pnumspan :class= { hidden:item . pnumdis } { { item . pnum } }/TD

  /tr

  /tbody

  /表格

  其中,这两个属性有一些特点:

  要显示的单元格的rowspan值为1,记录下一个行数。

  要显示的单元格显示为真。

  不显示的下一个单元格是rowspan 1,display为false。

  只有一行数据单元格rowspan为1,display为true。

  其实是设计了一个算法。对于输入表数组,两个属性rowspan和display被添加到每个数据项,并且**rowspan的值被计算为

  该列中相同值的行数,以及display的值是否根据rowspan的值显示* *,最后输出改变后的数组。

  3、代码

  函数组合单元格(列表){

  for(列表[0]中的字段){

  var k=0;

  while (k list.length) {

  list[k][field span ]=1;

  list[k][field dis ]=false;

  for(var I=k 1;I=list . length-1;i ) {

  if(list[k][field]==list[I][field]list[k][field]!=) {

  list[k][field span ];

  list[k][field dis ]=false;

  list[I][field span ]=1;

  list[I][field dis ]=true;

  }否则{

  打破;

  }

  }

  k=I;

  }

  }

  退货单;

  }

  写在最后。

  实际上,代码非常简短。它主要依赖于kmp的思想。它定义了一个指针K,开始指向第一个值,然后向下比较。这样就设置了rowspan和display,如果遇到不同的值,就会判断为跳出。进行下一个循环,通知指针K把这个过程的行数加起来跳转,然后比较下一个单元格的值。和kmp的指针跳转判断同一个字符串是一样的原理。

  函数combineCell()可以过滤网络请求返回的数据,附加相应的值,然后将值赋给vue监控的数组。

  其实这个方法不仅适用于vue,也适用于数据驱动的框架,包括Angular和React。如果要合并表,可以过滤请求的值。

  这就是本文的全部内容。希望对大家的学习有帮助,支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: