关于 ag-grid 的调研之路

2023-11-16

前言

因为公司业务需要 需要对 ag-grid数据网格进行调研 随后就开始了漫长的探索之路 废话不多说直接撸干活.

ag-grid 简介

AG Grid是一个功能齐全、高度可定制的JavaScript数据网格。它提供了卓越的性能,没有第三方依赖,并与所有主要的JavaScript框架顺利集成。不同框架支持相同的API。该框架可以支持Angular、React、Vue、Aurelia、WebComponents、Javascript等框架。分为社区版商业版,社区版完全免费代码开源,商业版为企业客户提供团队支持(需要许可证才能使用)。

Github 地址: Github: https://github.com/ag-grid/ag-grid

  如图所示:ag-grid-community 社区版  ag-grid-enterprise  企业版

 解释:社区版不需要注册许可证而企业版需要注册许可证(具体怎么使用下文会说)

             即使不使用许可证也可以使用企业版的功能但是在使用时可能在表格展示的时候出现5秒左右的水印或者在浏览器的控制台上出现错误信息 如下图所示:

 ag-grid 的功能特色

具备普通表格的特点:

  • 列交互(调整大小、重新排序和固定列)
  • 分页
  • 排序
  • 行选择

AG Grid特色功能:

  • Grouping / Aggregation * (聚合分组)
  • Custom Filtering (自定义过滤信息)
  • In-place Cell Editing (列内边界)
  • Records Lazy Loading * (数据懒加载)
  • Server-Side Records Operations * 服务端的数据操作)
  • Live Stream Updates
  • Hierarchical Data Support & Tree View * (树状结构)
  • Customizable Appearance
  • Customizable Cell Contents
  • Excel-like Pivoting * (类Excel的数据透视)
  • State Persistence
  • Keyboard Navigation
  • Data Export to CSV
  • Data Export to Excel * (数据的导入导出Excel)
  • Row Reordering
  • Copy / Paste
  • Column Spanning
  • Pinned Rows
  • Full Width Rows

注意  其中标有* 号的是企业版才有的功能.

项目代码实现

上面介绍了ag-grid 的强大功能 是不是都迫不及待的想体验一下这个功能丰富的表格插件了呢 那么就跟随作者文章来进行项目的搭建吧(本次demo选择react 进行搭建)

项目环境准备

一:安装node 环境  注意node版本

二:适应npx初始化一个react 项目

npx create-react-app my-app // 创建一个react的项目
cd my-app   // 进入到该项目目录
npm start   // 启动项目

 React的版本与 AG  Grid 版本对应关系请参考下图

在浏览器输入 localhost:3000.  如果可以正确打开页面那么就证明你的项目初始化成功了

三:使用npm 加载所需要的js 文件

进入到创建的 my-app 项目中执行如下的项目进行加载 (可能有些耗时)

npm install --save ag-grid-community ag-grid-react

编写第一个ag-grid

这里只展示部分代码

index.jsx

import React, { useState } from 'react';
import { render } from 'react-dom';
import { AgGridReact } from 'ag-grid-react';

import 'ag-grid-community/dist/styles/ag-grid.css';
import 'ag-grid-community/dist/styles/ag-theme-alpine.css';

const App = () => {
   const [rowData] = useState([
       {make: "Toyota", model: "Celica", price: 35000},
       {make: "Ford", model: "Mondeo", price: 32000},
       {make: "Porsche", model: "Boxter", price: 72000}
   ]);
   
   const [columnDefs] = useState([
       { field: 'make' },
       { field: 'model' },
       { field: 'price' }
   ])

   return (
       <div className="ag-theme-alpine" style={{height: 400, width: 600}}>
           <AgGridReact
               rowData={rowData}
               columnDefs={columnDefs}>
           </AgGridReact>
       </div>
   );
};

render(<App />, document.getElementById('root'));

编写完成后 启动react项目打开浏览器 如果没有意外的话 你将在浏览器中看到如下所示的结果

当你看到个表格映入你的眼帘时那么恭喜你  你已经踏入 ag-grid 的世界了 

结束语

 在接下来的文章中我会与你们一起探索这个功能性能非常优越的表格。从api到底层实现原理逐步深入 敬请期待吧。

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

关于 ag-grid 的调研之路 的相关文章

  • React Native 将样式设置为 State

    我想用backgroundColor of style1作为一种状态 并在函数中改变它change 我怎样才能访问style1 我的观点是调用该函数change从另一个函数 使按钮将其颜色更改为黄色 然后在一段时间后再次将其颜色更改为蓝色
  • Javascript Firefox - 如果 @import 存在于样式表中,则无法查询 cssRules - bug 或预期行为?

    如果 import 存在于 css 样式表中 我无法查询 cssRules 是否符合网络标准 或者知道 Firefox 的限制 注意 我正在从同一域导入 css 文件 var style rules document styleSheets
  • 如何使用 java/vb 脚本调用自定义 ActiveX dll 中的方法

    我使用 VB6 创建了一个 ActiveX dll 并使用打包和部署向导将其打包 生成了一个 cab 文件和一个演示 HTML 页面 此 ActiveX dll 包含一个 simgle 方法 该方法返回字符串且不接受任何参数 我遇到的麻烦是
  • 等待 JavaScript 中 Json 调用完成

    我正在使用下面的json调用在我的 javascript 方法中 function go123 var cityName var temp getJSON https abc in api city callback args functi
  • 如何检索 jquery $.ajax 对象的responseJSON属性[重复]

    这个问题在这里已经有答案了 我有这个 JavaScript ajax ajax type GET url DBConnect php data dataType json success function data error functi
  • 为具有可变内容的内联块元素提供相同的高度?

    我有 4 个宽度固定但内容可变的内联块元素 并且我希望所有这些元素具有相同的高度 最大元素的高度 请参见这个jsfiddle http jsfiddle net kKZXj 我应该如何实现这个目标 如果仅使用 css 无法做到这一点 那么使
  • 从字符串中删除货币符号并使用 Javascript 中的单行转换为数字

    我下面有一个字符串 它是以英镑为单位的价格 我想删除货币符号 然后将其转换为我可以用来与另一个值进行比较的数字 价格 例如 X gt Y 14 50 我之前已将字符串转换为用于货币的数字 var priceNum parseFloat pr
  • 在 HTML SELECT 标记中禁用键盘

    我想禁用 HTML SELECT 标记的键盘 以便用户只能使用鼠标来选择选项 我试过了event cancelBubble true on the onkeydown onkeyup and onkeypress没有运气的事件 有任何想法吗
  • Atom“自动完成”不起作用

    因此 当您安装 Atom 时 autocomplete 会随其一起提供 并且默认情况下处于启用状态 当我编写代码时 什么也没有显示 为什么 是否需要配置任何文件才能正常工作 In autocomplete plus settings pag
  • jquery/javascript 处理后移至命名锚点

    在进行一些 jquery 处理后 如何将焦点移动到同一页面上的不同部分 名为锚点 函数 ABC 进行一些处理 然后 我需要将用户移动到同一页面上的某个部分 页面下方 您可以使用下面的代码将屏幕滚动到 div 只需更改选择器以匹配您要滚动到的
  • KineticJS - 将舞台缩放到视口

    我正在努力将默认分辨率设置为 1366x756 我会根据视口来放大和缩小它 类似于此处显示的示例 http blogs msdn com b davrous archive 2012 04 06 modernizing your html5
  • 嵌套对象的 AJV 模式验证

    函数返回的对象看起来像这样 answer vehicle type 1 message Car model VW color red 答案 对象始终存在 其他字段基于 vehicle type E g 如果vehicle type 1 则有
  • Backbone-relational 无法实例化两个 RelationalModel 对象

    我正在尝试实现 BackboneRelational 并不断获得 无法实例化多个 Backbone RelationalModel 每种类型都有相同的 ID class App Models User extends Backbone Re
  • Firefox OS 后台服务

    我想构建一个应用程序 用户可以通过它输入一些设置 并且应用程序将启动后台服务来根据这些设置执行一些任务 我只想在模拟器中运行应用程序和后台服务 我知道它需要 认证 模式才能运行后台服务 但我现在不考虑在 Firefox Marketplac
  • Typeahead.js 干扰 Bootstrap 输入组

    如何防止 Typeahead js 拆分我的 Twitter Bootstrap 3 输入组 每当我将 Typeahead javascript 指向属于输入组一部分的文本区域时 连接的文本区域和提交按钮就会停止连接 这只是 Typeahe
  • CKEditor TypeError:c[a] 在 CodeIgniter 中未定义

    我正在尝试在基于 codeigniter 的网站中安装 CKEditor 并且我已按照本教程进行操作 Codeigniter 教程中的 CKEditor http nukium com developpement php framework
  • 如何检查摘要周期是否稳定(又名“Angular 完成编译了吗?”)

    tl dr 最初的问题是 如何在每个摘要周期触发回调 但潜在的问题更有趣 因为这回答了两个问题 所以我继续修改了标题 Context 在解决了所有依赖项 nginclude API 调用等之后 我试图控制 Angular 何时完成 HTML
  • 如何逐步绘制矢量路径? (拉斐尔.js)

    如何逐步动画化矢量路径 就像它被绘制一样 换句话说 慢慢地逐像素地显示路径 我在用着Rapha l js but如果您的答案不是特定于库的 例如可能有一些通用的编程模式可以完成此类事情 我对矢量动画相当陌生 欢迎 使用直线路径很容易做到 就
  • 将元素添加到 D3 圆包节点

    我正在尝试制作一个可缩放的圆形包装图 我希望每个子圆圈包含一个较小的图表 该图表始终具有相同的结构 即 4 列 只有条形的高度会改变 我尝试添加一个简单的rect到目前为止我的图表 但矩形没有添加到圆圈中并且是静态的 JS var marg
  • 截断段落前 100 个字符并隐藏段落的其余内容,以通过更多/更少链接显示/隐藏其余内容

    我有一个超过 500 个字符的段落 我只想获取最初的 100 个字符并隐藏其余部分 我还想在 100 个字符旁边插入 更多 链接 单击更多链接时 整个段落应显示并编辑文本 更多 到 更少 单击 更少 时 它应切换行为 段落是动态生成的 我无

随机推荐

  • 51 Proteus仿真频率计速度计超速报警数码管显示MAX7219-0001

    Proteus仿真小实验 51 Proteus仿真频率计速度计超速报警数码管显示MAX7219 0001 功能 硬件组成 51单片机 8位数码管 MAX7219数码管驱动模块 多个按键 LED灯 蜂鸣器 1 准确测量信号发生器输出的方波频率
  • Qt对象树

    01 什么是对象树 是用来组织和管理所有 QObject及其子类创建的对象 父对象 this 或 setParent 02 对象树的基本规则 对象树创建规则 对于Qt程序来说 父对象通常创建在栈上 子对象应创建在堆中 new 无需手动 de
  • ReentrantReadWriteLock原理分析

    在介绍ReentrantReadWriteLock读写锁原理之前 先来说下写锁与读锁 方便后续大家的理解 1 当资源被写锁占用时 此时是不允许去读的 只有当写锁被释后读锁才能去申请资源 2 当资源没有被写锁占用时 多个线程是可以共享资源 写
  • PyPI使用国内源

    PyPI使用国内源 https www cnblogs com sunnydou p 5801760 html 通过几次 的使用 对于默认的pip源的速度实在无法忍受 于是便搜集了一些国内的pip源 如下 阿里云 http mirrors
  • spring中基于AOP的基本配置

    Aop的概念 在不修改原有代码的情况下 增强跟主要业务没有关系的公共功能代码到 之 前写好的方法中的指定位置 这种编程的方式叫AOP 注意 AOP的底层用的代理 代理是一种设计模式 代理分为静态代理和动态代理 静态代理 静态代理需要自己建立
  • Angular ng-container ng-template 用法

    ng container本身不创建任何html代码 相当于一个容器
  • 对TCP/IP的深入浅出归纳【WEB开发者】腾讯认证空间

    前段时间做了一个开发 涉及到网络编程 开发过程比较顺利 但任务完成后始终觉得有一些疑惑 主要是因为对网络协议不太熟悉 对一些概念也没弄清楚 后来 我花了一些时间去了解这些网络协议 现在对TCP IP网络协议有了初步的认识 在这里总结出来 可
  • [MySQL]表的创建、修改与删除

    文章目录 1 MySQL中的数据类型 1 1 常用的数据类型 2 创建表 2 1 方式一 创建空的新表 2 1 1 新表的创建 2 1 2 查看表结构 2 1 3 查询创建表的语句 2 2 方式二 基于现有的表创建表 2 3 练习 2 3
  • 自旋锁

    临界区使用原则 空闲让进 没有进程在临界区时 想进入临界区的进程可进入 忙则等待 当已有进程进入临界区时 其他试图进入临界区的进程必须等待 有限等待 对请求访问的进程 应保证能在有限时间内进入临界区 让权等待 当进程不能进入临界区时 应立即
  • C++中,new一个对象,有无括号,括号中this含义,堆区和栈区 声明和定义 自动初始化

    堆区和栈区 Qt中 仅仅声明和定义 局部变量和成员变量 会自动初始化 堆区 成员变量 为例 地址不同 值相同 栈区 局部变量 为例 地址不同 值相同 int p qDebug lt lt p lt lt p lt lt p qDebug l
  • STN系列之人脸检测

    介绍一篇微软用STN做人脸检测的工作 Supervised Transformer Network for Efficient Face Detection Dong Chen Gang Hua Fang Wen and Jian Sun
  • Pytorch中卷积与池化等的实现以及模型搭建

    在上一篇文章中已经介绍了Pytorch中Dataset类以及Transform类中一些方法的使用 接下来介绍利用Pytorch来实现卷积等操作的实现 一 nn Module类 一个nn Module是神经网络的基本骨架 可以视为一个块 如果
  • UnicodeDecodeError: ‘gb2312‘ codec can‘t decode byte 0xe5 in position 1 解决过程

    python运行过程中倘若出现如下错误 UnicodeDecodeError gb2312 codec can t decode byte 0xe5 in position 1 illegal multibyte sequence 可以尝试
  • Shamir门限方案的秘钥分享(包括逆元求解)

    Shamir门限方案的秘钥分享 不要求支持大数 题目描述 实验目的 通过基于Shamir门限方案的密钥分割及恢复的演示 理解密钥分割的重要性 理解密钥分割的基本原理和作用 掌握基于Shamir门限方案的密钥分割软件的使用 实验原理 秘密共享
  • 截取字符串中所有的数字字符

    截取字符串中的数字 param s return public static String trimToNumber String s int n s length char a new char n int len 0 for int i
  • const定义的变量,可以作为数组[ ]里面的值吗?

    结论 在c中是不可以的 在c 中可以 证明 C 编译器把Const对象放在了符号表之中 C语言一般是放在只读数据区 为什么C 编译器这么做 我想一个原因就是减少一些存储操作次数 const c int main const int a 10
  • fastadmin 微信H5支付返回格式

    记录 使用 fastadmin 的epay插件进行调用微信H5支付时 默认情况下 返回格式化的跳转页面html代码 但前端若使用vue或uni app来编写就不适用了 直接返回支付跳转地址 addons epay library Servi
  • Ubuntu 16.04.4 LTS下安装JDK

    Ubuntu 16 04 4 LTS下安装JDK 阅读目录 写在前面 方法 测试 结束 写在前面 为什么我又装jdk 今天顺手升级了我的双系统中的Ubuntu 开始的时候用的图形化界面升级 后来你懂的 升级软件死锁了 用命令行也没有效果了
  • MySQL 索引原理

    MySQL索引深入剖析 官方定义是 索引 Index 是帮助MySQL高效获取数据的数据结构 简单来说 索引是一种数据结构 以协助快速查询 更新数据库表中数据 索引的基本原理 把创建索引列的内容进行排序 对排序的结果生成倒排表 在倒排表内容
  • 关于 ag-grid 的调研之路

    前言 因为公司业务需要 需要对 ag grid数据网格进行调研 随后就开始了漫长的探索之路 废话不多说直接撸干活 ag grid 简介 AG Grid是一个功能齐全 高度可定制的JavaScript数据网格 它提供了卓越的性能 没有第三方依