为啥vue-easytable 行数显示不完全

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥vue-easytable 行数显示不完全相关的知识,希望对你有一定的参考价值。

下面还有一行,为什么显示不出来,感觉是height计算少了一行,调节下自动生成的table高度是可以看的到的,数据有渲染出来,有谁有碰到过这样的问题吗?在线等

ElementUI的表格要求的数据类型为字典数组。我使用了python3写后端,那么从数据库取数据时添加一行cursorclass=pymysql.cursors.DictCursor即可。取出后我将其存入redis数据库方便之后取用。取用时使用eval()函数再传到前端即可。
前端放置Pagination 分页器,我这里直接采用了完整功能的分页器。
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage" :page-sizes="[10, 20, 50, 100]" :page-size="pagesize" layout="total, sizes, prev, pager, next, jumper" :total="data.length"> </el-pagination>
其中:handleSizeChange为pagesize发生改变时的相应函数,handleCurrentChange为currentPage发生改变时的相应函数。
page-sizes为所有可选择的page-size。可以自己更改其中的数字。
layout为附带的功能,一般不用动它。
total为总数据数。由于是字典数组,直接使用length方法即可得到总数据数。
data () return data: [], currentPage:1, pagesize:20, ,
初始页currentPage、初始每页数据数pagesize和数据data
methods: handleSizeChange: function (size) this.pagesize = size; , handleCurrentChange: function(currentPage) this.currentPage = currentPage;
上面的两个响应函数,很好理解。
参考技术A 我也遇见这个问题,调整vertical-resize-offset='100'这个参数的值就显示全了,可以试试

使用vue-easytable实现仿excel表格,支持可编辑添加删除行虚拟表格等功能

使用npm安装vue-easytable

npm install --save vue-easytable

在 main.js 中写入以下内容:

// 引入样式
import "vue-easytable/libs/theme-default/index.css";
// 引入组件库
import VueEasytable from "vue-easytable";
Vue.use(VueEasytable);
// 引入中文文语言包
import  VeLocale  from "vue-easytable";
import zhCN from "vue-easytable/libs/locale/lang/zh-CN.js";
VeLocale.use(zhCN);

代码实现

<template>
  <div class="spreadsheet">
    <ve-table
      style="word-break: break-word"
      fixed-header
      :scroll-width="0"
      :max-height="500"
      border-y
      :columns="columns"
      :table-data="tableData"
      row-key-field-name="rowKey"
      :virtual-scroll-option="virtualScrollOption"
      :cell-autofill-option="cellAutofillOption"
      :edit-option="editOption"
      :contextmenu-body-option="contextmenuBodyOption"
      :contextmenu-header-option="contextmenuHeaderOption"
      :row-style-option="rowStyleOption"
      :column-width-resize-option="columnWidthResizeOption"
    />
  </div>
</template>

<script>
const COLUMN_KEYS = ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"];
export default 
  data() 
    return 
      startRowIndex: 0,
      // 是否开启列宽可变
      columnWidthResizeOption: 
        enable: true,
      ,
      // 虚拟滚动配置
      virtualScrollOption: 
        enable: true,
        scrolling: this.scrolling,
      ,
      // 单元格自动填充配置
      cellAutofillOption: 
        directionX: true,
        directionY: true,
      ,
      // 单元格编辑配置
      editOption: 
        afterCellValueChange: ( row, column, changeValue ) => 
          console.log(row, column, changeValue);
          console.log(this.tableData);
        ,
      ,
      // header 右键菜单配置
      contextmenuHeaderOption: 
        contextmenus: [
          
            type: "CUT",
          ,
          
            type: "COPY",
          ,
          
            type: "EMPTY_COLUMN",
          ,
        ],
      ,
      // body 右键菜单配置
      contextmenuBodyOption: 
        contextmenus: [
          
            type: "CUT",
          ,
          
            type: "COPY",
          ,
          
            type: "SEPARATOR",
          ,
          
            type: "INSERT_ROW_ABOVE",
          ,
          
            type: "INSERT_ROW_BELOW",
          ,
          
            type: "SEPARATOR",
          ,
          
            type: "REMOVE_ROW",
          ,
          
            type: "EMPTY_ROW",
          ,
          
            type: "EMPTY_CELL",
          ,
        ],
      ,
      // 行样式配置
      rowStyleOption: 
        clickHighlight: false,
        hoverHighlight: false,
      ,
      tableData: [],
    ;
  ,
  computed: 
    columns() 
      let columns = [
        
          field: "index",
          key: "index",
          operationColumn: true,
          title: "",
          width: 55,
          fixed: "left",
          renderBodyCell: this.renderRowIndex,
        ,
      ];
      columns = columns.concat(
        COLUMN_KEYS.map((keyValue) => 
          return 
            title: keyValue,
            field: keyValue,
            key: keyValue,
            width: 90,
            edit: true,
          ;
        )
      );
      return columns;
    ,
  ,
  methods: 
    renderRowIndex( row, column, rowIndex ) 
      return <span>rowIndex + this.startRowIndex + 1</span>;
    ,
    scrolling(
      startRowIndex,
      visibleStartIndex,
      visibleEndIndex,
      visibleAboveCount,
      visibleBelowCount,
    ) 
      this.startRowIndex = startRowIndex;
    ,
    // 初始化表格
    initTableData() 
      let tableData = [];
      for (let i = 0; i < 5000; i++) 
        let dataItem = 
          rowKey: i,
        ;
        COLUMN_KEYS.forEach((keyValue) => 
          dataItem[keyValue] = "";
        );
        if (i === 1 || i === 3) 
          dataItem["C"] = "YOU";
          dataItem["D"] = "CAN";
          dataItem["E"] = "TRY";
          dataItem["F"] = "ENTER";
          dataItem["G"] = "SOME";
          dataItem["H"] = "WORDS";
          dataItem["I"] = "!!!";
        
        tableData.push(dataItem);
      
      this.tableData = tableData;
    ,
  ,
  created() 
    this.initTableData();
  ,
;
</script>
<style lang="scss">
.spreadsheet 
  padding: 0 10px;
  margin: 20px 0;

</style>

效果

 表格配置

参数说明类型可选值默认值
tableData表格数据Array--
footerData表格footer 汇总数据,数据结构和 tableData 一致Array--
columns列配置,具体项见下表 columns 配置Array--
showHeader是否展示表头Boolean-true
fixedHeader是否固定表头,默认启用。需要和 `maxHeight`结合使用Boolean-true
fixedFooter是否固定footer 汇总,默认启用。需要和 `maxHeight`结合使用Boolean-true
scrollWidth表格滚动区域的宽(开始出滚动条的宽度)。Number指定像素;String指定百分比NumberString--
maxHeight表格的最大高度。Number指定像素;String指定百分比。用于“固定头”或“虚拟滚动”功能NumberString--
rowKeyFieldName指定 row key 的字段名称。用于行展开、行单选、行多选、行点击高亮、虚拟滚动String--
borderAround是否展示表格外边框Boolean-true
borderX是否展示列横向边框Boolean-true
borderY是否展示列纵向边框Boolean-false
cellSpanOption单元格合并配置,具体见下表 cellSpanOption 配置Object--
columnHiddenOption列隐藏配置,具体见下表 columnHiddenOption 配置Object--
cellStyleOption单元格样式配置,具体见下表 cellStyleOption 配置Object--
rowStyleOption行样式配置,具体见下表 rowStyleOption 配置Object--
expandOption行展开配置,具体见下表 expandOption 配置Object--
checkboxOption行多选配置,具体见下表 checkboxOption 配置Object--
radioOption行单选配置,具体见下表 radioOption 配置Object--
virtualScrollOption虚拟滚动配置,建议需要一次性展示1000条以上使用。具体见下表 virtualScrollOption 配置。Object--
sortOption排序配置,具体见下表 sortOption 配置Object--
cellSelectionOption单元格选择配置,具体见下表 cellSelectionOption 配置Object--
editOption单元格编辑配置,具体见下表 editOption 配置Object--
contextmenuHeaderOption表格 header 右键菜单配置,具体见下表 contextmenuHeaderOption 配置Object--
contextmenuBodyOption表格 body 右键菜单配置,具体见下表 contextmenuBodyOption 配置Object--
eventCustomOption自定义事件配置,具体见下表 eventCustomOption 配置Object--
cellAutofillOption单元格自动填充配置,具体见下表 cellAutofillOption 配置Object--
clipboardOption单元格剪贴板配置,具体见下表 clipboardOption 配置Object--

以上是关于为啥vue-easytable 行数显示不完全的主要内容,如果未能解决你的问题,请参考以下文章

为啥解释计划显示错误的行数?

vue-easytable demo

为啥work里面插入矩阵后显示不完全,公式也显示不完全??

使用vue-easytable实现仿excel表格,支持可编辑添加删除行虚拟表格等功能

使用vue-easytable实现仿excel表格,支持可编辑添加删除行虚拟表格等功能

为啥秀米下拉的推文,显示不完全