Vue+abp树形表格



项目中需要用到树形表格,其他同学找了一个ZkTable,我也就跟着用了,不太好用,有更好的记得联系我。先说下缺点,如果这些不能满足你,后面也没必要看了。
缺点如下(也可能我不会用,如果你会一定记得告诉我):

  1. 第一列不能使用模板数据,必须是简单的属性字段,也就不能使用自定义html标签了,如果你用了,不好意思,整个数据显示不出来
  2. 单选没有高亮(根本没有单选?),反正我用的多选框代替单选
  3. 模板使用的插槽而不是render函数,模板复选框绑定的数据只能单向绑定,即在界面点选可以修改属性值,但是修改属性值不会更新页面选中状态
  4. 没有分页
  5. 绑定数据不能直接使用属性套vuex中的数据,更新了数据不会刷新页面

使用方法

首先安装插件

yarn add vue-table-with-tree-grid

在页面中引用

<template>
    <zk-table
        ref="table"
        sum-text="sum"
        index-text="#"
        :data="listdata"
        :columns="columns"
        :stripe="props.stripe"
        :border="props.border"
        :show-header="props.showHeader"
        :show-summary="props.showSummary"
        :show-row-hover="props.showRowHover"
        :show-index="props.showIndex"
        :tree-type="props.treeType"
        :is-fold="props.isFold"
        :expand-type="props.expandType"
        :selection-type="props.selectionType"
    >
        <template slot="selectChk" scope="scope">
        <Checkbox v-model="chkmodel(scope.row).isChecked"></Checkbox>
        </template>
    </zk-table>
</template>
<script lang="ts">
import { Component, Vue, Inject, Prop, Watch } from "vue-property-decorator";
import util from "@/lib/util";
import PageRequest from "@/store/entities/page-request";
import AbpBase from "@/lib/abpbase";
import ZkTable from "vue-table-with-tree-grid";
Vue.use(ZkTable);
export default class xxx extends AbpBase{
  props: any = {
    stripe: true, //是否显示间隔斑马纹
    border: true, //是否显示纵向边框
    showHeader: true, //是否显示表头
    showSummary: false, //是否显示表尾合计行
    showRowHover: true, //鼠标悬停时,是否高亮当前行
    showIndex: false, //是否显示数据索引
    treeType: true, //是否为树形表格
    isFold: false, //树形表格中父级是否默认折叠
    expandType: false, //是否为展开行类型表格(为 True 时,需要添加作用域插槽, 它可以获取到 row, rowIndex)
    selectionType: false //是否为多选类型表格
  };
  listdata: any = [];
  get list() {
    return this.listdata;
    //********这里不能直接用vuex的数据做属性,更新了数据界面不会跟新********
    //return this.$store.state.xxx.List;
  }
   async search() {
    request={};
    console.log(this.request)
    await this.$store.dispatch({
      type: "xxx/getList",
      data: request
    });
    this.listdata = this.$store.state.xxx.List;
  }
    chkmodel(row) {
    return this.getChkModel(row.id, this.listdata);
  }
  getChkModel(id, ls: Array<any>) {
    for (let index = 0; index < ls.length; index++) {
      const element = ls[index];
      if (element.id == id) {
        return element;
      }
      if (!!element.children) {
        let c = this.getChkModel(id, element.children);
        if (!!c) {
          return c;
        }
      }
    }
  }
columns = [
    // {
    //   label: "名称",
    //   type: "template",
    //   width: "100px",
    //   template: "namede"
    // },
    {
      label: "名称",
      prop: "name",
      resizable: true
    },
    {
      label: "类型",
      prop: "typeName"
    },
    {
      label: "选中",
      type: "template",
      width: "100px",
      template: "selectChk"
    }
  ];
}
</script>

嗯,就这样



参考资料

原文地址:https://www.cnblogs.com/missile/p/12038869.html

时间: 2024-08-04 13:21:02

Vue+abp树形表格的相关文章

基于Vue实现可以拖拽的树形表格实例详解

因业务需求,需要一个树形表格,并且支持拖拽排序,任意未知插入,github搜了下,真不到合适的,大部分树形表格都没有拖拽功能,所以决定自己实现一个.这里分享一下实现过程,项目源代码请看github,插件已打包封装好,发布到npm上 本博文会分为两部分,第一部分为使用方式,第二部分为实现方式 安装方式 npm i drag-tree-table --save-dev 使用方式 import dragTreeTable from 'drag-tree-table'  模版写法 ? 1 <dragTr

第二百二十八节,jQuery EasyUI,TreeGrid(树形表格)组件

jQuery EasyUI,TreeGrid(树形表格)组件 学习要点: 1.加载方式 2.属性列表 3.事件列表 4.方法列表 本节课重点了解 EasyUI 中 TreeGrid(树形表格)组件的使用方法,这个组件依赖于 DataGrid(数据表格)组件. 一.加载方式 建立一个 JSON 文件 [ { "id": 1, "name": "系统管理", "date": "2015-05-10", &quo

TreeGrid( 树形表格)

本节课重点了解 EasyUI 中 TreeGrid(树形表格)组件的使用方法,这个组件依赖于DataGrid(数据表格)组件 一. 加载方式//建立一个 JSON 文件[{"id" : 1,"name" : "系统管理","date" : "2015-05-10","children" : [{"id" : 2,"name" : "主机信

ExtJS4.2学习(15)树形表格

鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-27/185.html ------------------------------------------------------------------------------------------- 以下是完整代码: /** * Grid * 此js演示了ExtJS之树形表格 * 注意:在加载附件时要注意路径.如加载TreeStore——'tr

easyUI中treegrid组件构造树形表格(简单数据类型)+ssm后台

这几天做的项目要求用树形表格的形式展示一部分数据,于是就想到了使用easyUI的treegrid组件,但几经翻查各种资料,发现数据类型大多采取标准数据类型,即包含children元素的数据类型,小编查遍各种资料,几经实验,小编找到了一种使用简单数据类型的展示树形表格的方法.在这里介绍给大家,仅供参考: 框架使用的是ssm框架,数据库用的是oracle,其中数据库中要展示的表设计成大致如下的样子: 参考了一下easyUI的demo中给出的数据类型,如下格式: 打开里面显示如下: 这是一个json串

EXTJS 4 树形表格组件使用示例

EXTJS 4 树形表格组件使用示例 一.整体效果图 二.使用说明及效果图 2.1.程序代码及说明: 2.1.1.表格存储部分的代码说明 //开启tooltip工具 Ext.QuickTips.init(); //定义model Ext.define('partModel', { extend: 'Ext.data.Model', fields: [ {name: 'partNo', type: 'string'}, {name: 'partName', type: 'string'}, {na

bootstrap treegrid 实现树形表格结构

前言 :最近的项目中需要实现树形表格功能,由于前端框架用的是bootstrap,但是bootstrapTable没有这个功能所以就找了一个前端的treegrid第三方组件进行了封装.现在把这个封装的组件贴出来 大家共同讨论进步. 1 效果图 2 组件下载地址 链接: https://pan.baidu.com/s/1R8jIGXimeJwUcL7WyqZjDA 密码: ud96 3 组件的使用 3.1 在页面中引入如下的文件 <link href="~/Content/bootstrap/

vue 2.0 + ElementUI构建树形表格

解决: 本来想在网上博客找一找解决方法,奈何百度到的结果都不尽人意,思维逻辑不清,步骤复杂,代码混乱,找了半天也没找到一个满意的,所以干脆就自己动手写一个 思路: table需要的数据是array,所以树结构数据要转化为array,所以需要2个局部变量,dataTree(原始数据)以及dataTable(封装数据) 把dataTree的数据封装到dataTable 点开某一层(row)的时候,把dataTree这一层数据的子集放在dataTable row下标后(就是数组组合数组) 通过div的

基于Vue.js的表格分页组件

BootPage组件简介 其实也不是啥高大上的组件了,相反确实一个简单的表格分页组件而已,主要是自己最近项目中需要一个表格分页组件,而Vue官方组件库里分页组件都功能太强大或者没有适合我的,所以就自己写了一个凑合着用,或许有人和我一样需要这样一个简单的分页组件来实现简单的分页功能,我便在这里分享一下,大家自觉填坑咯. 如需高大上的组件,可以移步Vue官方组件库:https://github.com/vuejs/awesome-vue#libraries--plugins BootPage是一款支