Ag Grid 组件 Vue Data Grid: Components

2023-11-17

前往官网查看原文档:Vue Data Grid: Components

您可以创建自己的自定义组件来自定义网格的行为。 例如,您可以自定义单元格的呈现方式、值的编辑方式以及创建自己的过滤器。

您可以在 AG Grid 中提供的组件类型的完整列表如下:

本页的其余部分提供了所有组件类型的通用信息。

声明自定义组件

VueJS 组件可以定义为简单的内联组件,也可以定义为完整/复杂的外部组件(即在单独的文件中)。

“内联”组件

export default {
  data() {
      return {
          ...data 
      }
  },
  components: {
      AgGridVue,              // 实际的 AgGridVue 网格组件
      CubeComponent: {        // 内联自定义组件
          template: '<span>{{ valueCubed() }}</span>',
          methods: {
              valueCubed() {
                  return this.params.value * this.params.value * this.params.value;
              }
          }
      }
  }
}

请注意,我们可以定义带引号或不带引号的属性名称,但请注意,为了在你的列定义中引用这些组件,你需要将它们作为 区分大小写 的字符串来提供。

本地声明的组件

const SquareComponent = {
   template: '<span>{{ valueSquared() }}</span>',
   methods: {
       valueSquared() {
           return this.params.value * this.params.value;
       }
   }
};

外部化的 JavaScript 组件(.js 文件)

// SquareComponent.js
export default {
   template: '<span>{{ valueSquared() }}</span>',
   methods: {
       valueSquared() {
           return this.params.value * this.params.value;
       }
   }
};

外部化单文件组件(SFC / .vue 文件)

<template>
    <span class="currency">{{ params.value | currency('EUR') }}</span>
</template>

<script>
export default {
    filters: {
        currency(value, symbol) {
            let result = value;
            if (!isNaN(value)) {
                result = value.toFixed(2);
            }
            return symbol ? symbol + result : result;
        }
    }
};
</script>

<style scoped>
    .currency {
        color: blue;
    }
</style>

请注意,在这种情况下,组件名称将与实际引用相匹配,但如果您选择,则可以指定不同的名称:

components: {
    AgGridVue,
    'MySquareComponent': SquareComponent
}

如果您要按名称注册组件(见下文),则以上所有方法都有效。 如果你希望通过直接引用注册组件,那么你需要用 Vue.extend(...your component...)( 对于 Vue 2 )或 defineComponent(...your component...)( 对于 Vue 3)。

我们强烈建议按名称注册,因为它提供了灵活性——我们所有的示例都使用按名称注册。

注册自定义组件

每种组件类型(单元格渲染器、单元格编辑器等)的页面都包含如何注册和使用每种组件类型的例子。然而,在这里,退一步讲,把注意力集中在所有组件类型所共有的组件注册过程上,是很有用的。

注册自定义组件一般有两种方式(“内联”组件只能按名称注册):

  • 按名称
  • 直接引用(已弃用)

网格完全支持这两个选项 - 但是我们建议按名称引用,因为不推荐使用直接引用注册。 按名称注册也是两种选择中更灵活的一种,鉴于此,文档中的所有示例都使用按名称注册。 保留直接引用方法是为了向后兼容,因为这是在 AG Grid 中的原始方法。

注册内联自定义组件

内联自定义组件只能按名称在网格中注册:

<template>
  <ag-grid-vue :columnDefs="columnDefs" ...other properties>
  </ag-grid-vue>
</template>

<script>
//...other imports
import {AgGridVue} from "ag-grid-vue3";

export default {
  components: {
      AgGridVue,
      CubeComponent: {
          template: '<span>{{ valueCubed() }}</span>',
          methods: {
              valueCubed() {
                  return this.params.value * this.params.value * this.params.value;
              }
          }
      }
  },
  data() {
      return {
          columnDefs: [
               {
                  headerName: "Cube",
                  field: "value",
                  cellRenderer: 'CubeComponent',     
              }
          ]
      }
  }
  //...other properties & methods
}
</script>

注册非内联自定义组件

1. 按名称

要在网格中使用组件,您将通过区分大小写的名称引用组件,例如:

<template>
  <ag-grid-vue ...other properties>
  </ag-grid-vue>
</template>

<script>
//...other imports
import {AgGridVue} from "ag-grid-vue3";
import CubeComponent from './CubeComponent.vue';

export default {
  components: {
      AgGridVue,
      CubeComponent
  }
  data() {
      return {
          columnDefs: [
               {
                  headerName: "Cube",
                  field: "value",
                  cellRenderer: 'CubeComponent'     
              }
          ]
      }
  }
  //...other properties & methods
}
</script>

2. 直接引用(已弃用)

弃用
此方法受支持但不推荐,并将在未来版本中删除。

通过直接引用在 Grid 中注册组件时,目标组件必须包装在 Vue.extend(...)(对于 Vue 2)或 defineComponent(...)(对于 Vue 3)中:

<template>
  <ag-grid-vue ...other properties>
  </ag-grid-vue>
</template>

<script>
//...other imports
import Vue from "vue";
import {AgGridVue} from "ag-grid-vue3";

// 包裹在 Vue.extend 中的组件可直接引用
const CubeComponent = Vue.extend({
  template: '<span>{{ valueCubed() }}</span>',
  methods: {
      valueCubed() {
          return this.params.value * this.params.value * this.params.value;
      }
  }
};


export default {
  components: {
      AgGridVue,
      // CubeComponent在直接引用注册的时候可以不用在这里注册
  }
  data() {
      return {
          columnDefs: [
               {
                  headerName: "Cube",
                  field: "value",
                  cellRenderer: CubeComponent
              }
          ]
      }
  }
  //...other properties & methods
}
</script>

按名称引用的优势

按名称注册组件具有以下优点:

  • 无需更改所有列定义即可更改实现。 例如,您可能有 20 列使用货币单元格渲染器。 如果你想将单元格渲染器更新为另一个货币单元格渲染器,你只需要在唯一的地方(注册单元格渲染器的地方)进行更新,所有列都将采用新的实现。
  • 指定列定义的网格部分是纯 JSON。 这对于从静态数据读取列定义的应用程序很有帮助。 如果您直接在列定义中引用类名,则无法将列定义转换为 JSON。
  • 无需使用 Vue.extend(...)/ defineComponent(...)包装组件

提供附加参数

每个自定义组件都从网格中获取一组参数。 例如,对于 Cell Renderer,除其他外,网格提供了要渲染的值。 您可以通过提供特定于您的应用程序的附加参数来为自定义组件提供附加属性(例如要使用的货币符号)。

要提供额外的参数,请使用属性 [prop-name]Params,例如 cellRendererParams

<ag-grid-vue
    :columnDefs="columnDefs"
    /* other grid options ... */>
</ag-grid-vue>

this.columnDefs = [
    { 
        field: 'price',
        cellRenderer: PriceCellRenderer,
        cellRendererParams: {
            currency: 'EUR'
        }
    },
]

混合 JavaScript 和 Vue

提供自定义组件时,您可以选择以下选项:

  1. 在 JavaScript 中提供一个 AG Grid 组件。
  2. 提供一个 AG Grid 组件作为 Vue 组件。

例如,如果你想构建一个单元格渲染器,你可以选择使用 Vue 或纯 JavaScript 来构建单元格渲染器。

下面的代码片段展示了如何同时使用 JavaScript 和 Vue 组件:

<template>
  <ag-grid-vue :components="components" 
               ...other properties>
  </ag-grid-vue>
</template>

<script>
//...other imports
import {AgGridVue} from "ag-grid-vue3";
import JavascriptComponent from './JavascriptComponent.js';
import VueComponent from './VueComponent.vue';

export default {
  components: {
      AgGridVue,
      // Vue组件在这里注册
      'vueComponent': VueComponent
  }
  data() {
      return {
          // JavaScript 组件在这里注册,用于按名称查找组件时
          components: {
              // 声明javascript组件
              'javascriptComponent': JavascriptComponent
          },          
          columnDefs: [
               {
                  headerName: "JS Cell",
                  field: "value",
                  cellRenderer: 'javascriptComponent',    // 按名称引用/使用 javascript 组件
              },
               {
                  headerName: "JS Cell",
                  field: "value",
                  cellRenderer: JavascriptComponent,    // 直接引用/使用javascript组件
              },
              {
                  headerName: "Vue Cell",
                  field: "value",
                  cellRenderer: 'vueComponent',  // 引用/使用 Vue 组件
              }
          ]
      }
  }
  //...other properties & methods
}
</script>

查看如何创建纯 JavaScript 组件

组件的使用情况

下表总结了组件的配置位置以及使用的属性

组件 名称 位置 属性
Cell Renderer 自定义单元格 Column Definition cellRenderer
cellRendererParams
cellRendererSelector
Cell Editor 自定义单元格编辑器 Column Definition cellEditor
cellEditorParams
cellEditorSelector
Filter 对于显示在列菜单内的自定义列过滤器 Column Definition filter
filterParams
Floating Filter 对于显示在列菜单内的自定义列浮动过滤器 Column Definition floatingFilter
floatingFilterParams
Header Component 用于呈现正常的列标题。 为列配置。 Column Definition headerComponent
headerComponentParams
Header Group Component 用于呈现列组。 为列组配置。 Column Definition headerGroupComponent
headerGroupComponentParams
Tooltip Component 工具提示组件允许您将自己的工具提示添加到网格的列标题和单元格中 Column Definition tooltipComponent
tooltipComponentParams
Group Row Cell Renderer Grid Option groupRowRenderer
groupRowRendererParams
Group Row Inner Cell Renderer Grid Option innerRenderer
innerRendererParams
Detail Cell Renderer Grid Option detailCellRenderer
detailCellRendererParams
Full Width Cell Renderer Grid Option fullWidthCellRenderer
fullWidthCellRendererParams
Loading Cell Renderer 加载中单元格渲染器 Grid Option loadingCellRenderer
loadingCellRendererParams
Loading Overlay 加载中覆盖组件 Grid Option loadingOverlayComponent
loadingOverlayComponentParams
No Rows Overlay 表格无数据时覆盖组件 Grid Option noRowsOverlayComponent
noRowsOverlayComponentParams
Date Component 自定义日期过滤器中的日期选择组件 Grid Option dateComponent
dateComponentParams
Status Bar Component 自定义状态栏组件 Grid Option -> Status Bar statusPanel
statusPanelParams
Tool Panel 自定义工具面板组件 Grid Option -> Side Bar toolPanel
toolPanelParams

网格自带提供的组件

网格带有可以使用的预注册组件。 网格提供的每个组件都以命名空间 ag开头,以尽量减少与用户提供的组件的命名冲突。 网格提供的组件的完整列表在下表中:

Date Inputs 日期输入
agDateInput 过滤器使用的默认日期输入
Column Headers 列标题
agColumnHeader 默认列标题
agColumnHeaderGroup 默认列组标题
Column Filters 列过滤器
agSetColumnFilter 设置过滤器(使用 AG Grid Enterprise 时的默认设置)
agTextColumnFilter 简单文本过滤器(使用 AG Grid Community 时的默认设置)
agNumberColumnFilter 数字过滤器
agDateColumnFilter 日期过滤器
Floating Filters 浮动过滤器
agSetColumnFloatingFilter 浮动组过滤器
agTextColumnFloatingFilter 浮动文本过滤器
agNumberColumnFloatingFilter 浮动数字过滤器
agDateColumnFloatingFilter 浮动日期过滤器
Cell Renderers 单元格渲染器
agAnimateShowChangeCellRenderer 使数值变化产生动画效果的单元格渲染器
agAnimateSlideCellRenderer 使数值变化产生动画效果的单元格渲染器
agGroupCellRenderer 用于显示组信息的单元格渲染器
agLoadingCellRenderer 使用企业行模型时,用于加载行的单元格渲染器
Overlays 覆盖器
agLoadingOverlay 加载中…覆盖器
agNoRowsOverlay 数据为空覆盖器
Cell Editors 单元格编辑器
agTextCellEditor 单元格文本编辑器
agSelectCellEditor 单元格选择编辑器
agRichSelectCellEditor 丰富的选择编辑器
agLargeTextCellEditor 大文本框单元格编辑器
Master Detail 细节网格
agDetailCellRenderer 主格/细节格的细节面板

覆盖网格组件

也可以覆盖组件。 在网格使用默认值的地方,这意味着将改用覆盖组件。 覆盖有意义的默认组件如下:

  • agDateInput: 更改所有过滤器的默认日期选择。
  • agColumnHeader: 更改所有列的默认列标题。
  • agColumnGroupHeader: 更改所有列的默认列组标题。
  • agLoadingCellRenderer: 更改企业行模型的默认加载单元格渲染器。
  • agLoadingOverlay: 更改默认的“加载”覆盖。
  • agNoRowsOverlay: 更改默认加载“无行”覆盖。
  • agCellEditor: 更改默认的单元格编辑器。
  • agDetailCellRenderer: 更改主/细节网格的默认细节面板。

要覆盖默认组件,请在上述名称下的 GridOptions components属性中注册自定义组件。

const MyApp = {
   // 这是我们指定要使用的组件而不是默认组件的地方
   components: {
       'ag-grid-vue': AgGridVue
       agDateInput: CustomDateComponent,
       agColumnHeader: CustomHeaderComponent
   },

可重写的网格组件是唯一需要用components额外指定的组件,以便将其使用与实际的组件联系起来。所有其他的注册类型在列定义中或在AgGridVue组件本身上指定它们的用途。

关于这方面的例子,请参考日期组件的文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ag Grid 组件 Vue Data Grid: Components 的相关文章

随机推荐

  • vue+webpack5:If you want to include a polyfill, you need to

    升级 vue cli 5 0 1 发现 const path require path 异常 发现默认webpack 是 提示v5区别于v4不再自动引入Polyfills 需要手动添加 按照控制台提示 1 安装path browserify
  • mysql不包含模糊查询

    包含like 不包含not like select from 数据库表 where HouseName like 江门奥园项目 and HouseName like 幢 and HouseName not like 商 不包含not in
  • jupyter修改文件目录和虚拟环境

    在我们安装完jupyter的时候 他是默认为根目录的 我们想切换到我们自己创建的文件目录中该怎么做呢 请看下面步骤 一 切换文件目录 首先 先在我们要放的目录下创建一个文件夹 如 我的为 F Jupyter 在命令行窗口中输入 jupyte
  • cocos2dx 常见的49中动作详解

    bool HelloWorld init 1 super init first if CCLayer init return false CCSprite sp CCSprite create Icon png sp gt setPosit
  • java中的类型赋值常见错误

    Java中float double long类型变量赋值添加f d L尾缀问题 添加尾缀说明 我们知道Java在变量赋值的时候 其中float double long数据类型变量 需要在赋值直接量后面分别添加f或F d或D l或L尾缀来说明
  • JAVA的可变类与不可变类

    可变类和不可变类 Mutable and Immutable Objects 的初步定义 可变类 当你获得这个类的一个实例引用时 你可以改变这个实例的内容 不可变类 当你获得这个类的一个实例引用时 你不可以改变这个实例的内容 不可变类的实例
  • Mybatis批量插入数据的三种方式分享

    转自 Mybatis批量插入数据的三种方式分享 下文笔者讲述Mybatis插入数据的方法分享 如下所示 for循环insert long start System currentTimeMillis for int i 0 i lt 100
  • 结构化思维

    我们在求职时 经常能看到岗位要求上写着 逻辑思维 系统 结构化思维 身为一个直觉的打工仔 面对未来Boss耳提面命的 能力标签 我们怎能视若无睹 逻辑思维 好理解 不就 判断 推理 嘛 可这 结构化思维 是啥 很多人就答不上来了 在理解概念
  • electron ajax路径,electron 文件及文件夹上传的问题探索

    不晓得如今electron最新版的dialog解决了这个问题没有 选择文件夹的时候没有返回文件夹里面全部的文件 而是返回了文件夹的路径 一样的在网页端是能够经过webkitDirectory获取到文件夹下面全部的文件node 我试了不少的方
  • https开头的网址是什么意思_网址是什么意思?基础知识普及

    通俗的理解网址就是常说的URL 是很多个它一起组成了数量庞大形形色色的网站 网址 Uniform Resource Locator 统一资源定位器 是计算机Web网络相关的术语 就是网页地址的意思 我们的互联网世界就是由很多的网址组成 也可
  • 2021-04-06

    开源 开源的概念 开源 一词对应英文 Open Source 最初起源于软件开发领域 因此也称为 开放源代码 对应的软件则称为开源软件 Open Source Software 除了我们熟知的开源软件以外 开源的表现形式还有开源硬件 Ope
  • C++编译器为类自动生成拷贝构造函数的情况

    在一下情况中C 会为类自动生成拷贝构造函数 1 类中有虚函数 这种情况即意味着类的对象中有指向虚函数表的指针 考虑下面的情况 class A private int m a public virtual void ShowVal void
  • echarts实现气泡图(气泡之间不叠加)

    前言 echarts本身是有气泡图的 官方气泡图的特点是每个气泡的位置是基于坐标轴进行定位 如图1和2所示 但是本文所介绍的气泡图并不是官方所介绍的气泡图 而是一类区别于官方的图表类型 这种图表类型通常采用d3 js插件实现 如图3所示 从
  • MPC8314 (e300核) uboot 调试

    历经2个多月 完成了MPC8314最小系统 uboot 及Linux内核和根文件系统的调试 这是我第一次从头开始做小系统和内核的移植工作 虽然调试的比较辛苦 但是收获还是很多的 下面就介绍一下调试的过程和一些原理性的东西 1 MPC8314
  • Java基础面试题(三) (2020持续更新)

    前言 全套面试题请直接转到文章末尾 1 Java 中能创建 volatile 数组吗 能 Java 中可以创建 volatile 类型数组 不过只是一个指向数组的引用 而不 是整个数组 我的意思是 如果改变引用指向的数组 将会受到 vola
  • 馆员工作站的产品功能以及特点介绍

    馆员工作站通过跟电脑相互连接使用 工作人员对图书进行标签加工时 可使用设备对粘贴在图书上的RFID电子标签进行加工 通过条形码扫描器扫描图书上的条形码 同时识别图书上的电子标签 对电子标签和图书条码进行标签初始化操作 除此之外 还可以进行图
  • 6个常用的Python编程开发工具

    随着互联网的迅速发展 新技术不断创新 万物互联的时代 企业对IT人员的需求不断增加 很多想要进入IT行业的小伙伴经常会抱怨 想入门 却不知道从哪下手 最近就有不少小伙伴和小编抱怨 我想学Python 但是都不知道该使用哪些工具 别着急 学习
  • ES6入门

    一 let和const命令 1 let命令 类似于var 但是只在let所在的代码块有效 不存在变量提升 即一定要先声明后使用 暂时性死区 待理解 不允许重复声明 2 块级作用域 内层不影响外层 3 const命令 const声明一个常量
  • JAVA 什么是多态?

    面向对象编程有三大特性 封装 继承 多态 封装隐藏了类的内部实现机制 可以在不影响使用的情况下改变类的内部结构 同时也保护了数据 对外界而已它的内部细节是隐藏的 暴露给外界的只是它的访问方法 继承是为了重用父类代码 两个类若存在IS A的关
  • Ag Grid 组件 Vue Data Grid: Components

    目录 声明自定义组件 内联 组件 本地声明的组件 外部化的 JavaScript 组件 js 文件 外部化单文件组件 SFC vue 文件 注册自定义组件 注册内联自定义组件 注册非内联自定义组件 1 按名称 2 直接引用 已弃用 按名称引