【ag-grid-vue】column

网格中的每一列都使用列定义(ColDef)来定义。列根据在网格选项中指定的列定义的顺序在网格中定位。

列定义

 下面的例子展示了一个定义了3列的简单网格:

<template><ag-grid-vuestyle="height: 300px; width: 1000px"class="ag-theme-balham":columnDefs="columnDefs":rowData="rowData"@grid-ready="onGridReady"></ag-grid-vue>
</template><script>
import { AgGridVue } from "ag-grid-vue";
export default {name: "AgTable",components: {AgGridVue,},data() {return {gridApi: null,columnDefs: [{ field: "athlete" }, { field: "sport" }, { field: "age" }],rowData: [{ athlete: "athlete-01", sport: "sport-01", age: "age-01" },{ athlete: "athlete-02", sport: "sport-02", age: "age-02" },],};},methods: {onGridReady(params) {this.gridApi = params.api;this.gridApi.sizeColumnsToFit();},},
};
</script>

列头分组

如果你想对列进行分组,你可以像这样将它们作为子列包含: 

 columnDefs: [{headerName: "Group A",children: [{ field: "athlete" },{ field: "sport" },{ field: "age" },]}]

效果 

 访问行数据值

colDef。字段属性用于访问行数据对象中的值。在大多数情况下,字段将是来自行数据对象的属性名。但是,如果行数据包含嵌套对象,则可以使用点表示法引用深层属性值。

例如,如果行数据有一个对象属性奖牌,其中包含个人奖牌数,那么要显示获得的金牌,请使用字段值'medal .gold'。

使用规则 

<ag-grid-vue:rowData="rowData":columnDefs="columnDefs"
</ag-grid-vue>this.rowData = [{athlete: 'Michael Phelps',medals: {gold: 8, silver: 1, bronze: 0}}
];
this.columnDefs = [{ field: 'athlete' },// Using dot notation to access nested property{ field: 'medals.gold', headerName: 'Gold' },
];

 示例

<template><ag-grid-vuestyle="height: 200px; width: 1000px"class="ag-theme-balham":columnDefs="columnDefs":rowData="rowData"@grid-ready="onGridReady"></ag-grid-vue>
</template><script>
import { AgGridVue } from "ag-grid-vue";
export default {name: "AgTable",components: {AgGridVue,},data() {return {gridApi: null,columnDefs: [{ field: "name" },{ field: "medals.gold", headerName: "Gold" },{ field: "person.age" },],rowData: [{name: "Michael Phelps",person: {age: 23,country: "United States",},medals: {gold: 8,silver: 0,bronze: 0,},},{name: "Michael Phelps",person: {age: 19,country: "United States",},medals: {gold: 6,silver: 0,bronze: 2,},},{name: "Michael Phelps",person: {age: 27,country: "United States",},medals: {gold: 4,silver: 2,bronze: 0,},},],};},methods: {onGridReady(params) {this.gridApi = params.api;this.gridApi.sizeColumnsToFit();},},
};
</script>

 效果

自定义列类型

除了上述特性之外,网格还提供了其他方法来帮助简化和避免重复的列定义。这是通过以下方式完成的:

  • defaultColDef:包含所有列将继承的属性。
  • defaultColGroupDef:包含所有列组将继承的属性。
  • columnTypes:包含列定义可以继承的属性的特定列类型。

默认列和列类型可以指定列上可用的任何列属性。

 注意:列类型被设计为仅对列工作,即它们不会应用于列组。

 下面的代码片段演示了这三个属性:

<ag-grid-vue:columnDefs="columnDefs":defaultColDef="defaultColDef":defaultColGroupDef="defaultColGroupDef":columnTypes="columnTypes"/* other grid options ... */>
</ag-grid-vue>this.columnDefs = [// uses the default column properties{ headerName: 'Col A', field: 'a'},// overrides the default with a number filter{ headerName: 'Col B', field: 'b', filter: 'agNumberColumnFilter' },// overrides the default using a column type{ headerName: 'Col C', field: 'c', type: 'nonEditableColumn' },// overrides the default using a multiple column types{ headerName: 'Col D', field: 'd', type: ['dateColumn', 'nonEditableColumn'] }
];// a default column definition with properties that get applied to every column
this.defaultColDef = {// set every column widthwidth: 100,// make every column editableeditable: true,// make every column use 'text' filter by defaultfilter: 'agTextColumnFilter',
};// a default column group definition with properties that get applied to every column group 
this.defaultColGroupDef = {marryChildren: true,
};// define a column type (you can define as many as you like)
this.columnTypes = {nonEditableColumn: { editable: false },dateColumn: {filter: 'agDateColumnFilter',filterParams: { comparator: myDateComparator },suppressMenu: true}
};

当网格创建列时,它从默认列定义开始,然后添加在启用Cell Data Type上定义的属性,然后添加通过列类型定义的属性,最后添加来自特定列定义的属性。

在每个阶段,如果已经存在列属性,则后者将覆盖现有值。例如,如果defaultColDef设置为edit: true,但columnType设置为edit: false,则该列将不可编辑。 

例如,下面是创建上面所示的“Col C”时使用的步骤大纲:

// Step 1: the grid starts with an empty definition
{}// Step 2: default column properties are merged in
{ width: 100, editable: true, filter: 'agTextColumnFilter' }// Step 3: column type properties are merged in (using the 'type' property), overriding where necessary
{ width: 100, editable: false, filter: 'agTextColumnFilter' }// Step 4: finally column definition properties are merged in, overriding where necessary
{ headerName: 'Col C', field: 'c', width: 100, editable: false, filter: 'agTextColumnFilter' }

 下面的示例演示了不同的配置属性

1. 普通设置(不设置默认值)

<template><ag-grid-vuestyle="width: 100%; height: 100%"class="ag-theme-alpine":columnDefs="columnDefs"@grid-ready="onGridReady":rowData="rowData"></ag-grid-vue>
</template><script>
import { AgGridVue } from "ag-grid-vue";export default {name: "AgTable",components: {AgGridVue,},data() {return {gridApi: null,columnDefs: [{ field: "athlete" },{ field: "sport" },{ field: "age", type: "numberColumn" },{ field: "year", type: "numberColumn" },{field: "date",type: ["dateColumn", "nonEditableColumn"],width: 220,},{headerName: "Medals",groupId: "medalsGroup",children: [{ headerName: "Gold", field: "gold", type: "medalColumn" },{ headerName: "Silver", field: "silver", type: "medalColumn" },{ headerName: "Bronze", field: "bronze", type: "medalColumn" },{headerName: "Total",field: "total",type: "medalColumn",// 该列是可折叠的columnGroupShow: "closed",},],},],gridApi: null,columnApi: null,defaultColDef: {// 设置默认列宽度width: 150,// 使每个列都可编辑editable: true,// 让每个列默认使用'text'过滤器filter: "agTextColumnFilter",// 默认情况下启用浮动过滤器floatingFilter: true,// 调整列的大小resizable: true,// 禁用单元格数据类型cellDataType: false,},defaultColGroupDef: null,columnTypes: null,rowData: null,};},methods: {onGridReady(params) {this.gridApi = params.api;// this.gridApi.sizeColumnsToFit();this.gridColumnApi = params.columnApi;const updateData = (data) => params.api.setRowData(data);fetch("https://www.ag-grid.com/example-assets/olympic-winners.json").then((resp) => resp.json()).then((data) => updateData(data));},},created() {this.defaultColGroupDef = {marryChildren: true,};this.columnTypes = {numberColumn: { width: 130, filter: "agNumberColumnFilter" },medalColumn: { width: 100, columnGroupShow: "open", filter: false },nonEditableColumn: { editable: false },dateColumn: {// specify we want to use the date filterfilter: "agDateColumnFilter",// add extra parameters for the date filterfilterParams: {// provide comparator functioncomparator: (filterLocalDateAtMidnight, cellValue) => {// In the example application, dates are stored as dd/mm/yyyy// We create a Date object for comparison against the filter dateconst dateParts = cellValue.split("/");const day = Number(dateParts[0]);const month = Number(dateParts[1]) - 1;const year = Number(dateParts[2]);const cellDate = new Date(year, month, day);// Now that both parameters are Date objects, we can compareif (cellDate < filterLocalDateAtMidnight) {return -1;} else if (cellDate > filterLocalDateAtMidnight) {return 1;} else {return 0;}},},},};},
};
</script>

 效果

2. 添加默认设置 defaultColDef 

<template><ag-grid-vuestyle="width: 100%; height: 100%"class="ag-theme-alpine":columnDefs="columnDefs"@grid-ready="onGridReady":defaultColDef="defaultColDef":rowData="rowData"></ag-grid-vue>
</template>
defaultColDef: {// 设置默认列宽度width: 150,// 使每个列都可编辑editable: true,// 让每个列默认使用'text'过滤器filter: "agTextColumnFilter",// 默认情况下启用浮动过滤器floatingFilter: true,// 调整列的大小resizable: true,// 禁用单元格数据类型cellDataType: false,},

 效果

3.  defaultColGroupDef

 Marry Children

有时您希望组的列始终粘在一起。要实现这一点,请设置列组属性marryChildren=true。下面的例子演示了以下内容:

'Medals'有marryChildren=true。
如果在这些组中移动列,则无法将列移出组。例如,如果你拖拽'Gold',就不可能把它拖出'Medals'组。
如果移动非组列,例如Silver,则不可能将其放置在组的中间,因此不可能将组分开。

 举例:

1. 没有设置defaultColGroupDef

 初始状态

 拖动列“Silver”后

 2. 设置defaultColGroupDef

<template><ag-grid-vuestyle="width: 100%; height: 100%"class="ag-theme-alpine":columnDefs="columnDefs"@grid-ready="onGridReady":defaultColDef="defaultColDef":defaultColGroupDef="defaultColGroupDef":rowData="rowData"></ag-grid-vue>
</template>created() {this.defaultColGroupDef = {marryChildren: true,};
}

 初始状态

  拖动列“Silver”后

 

4. columnTypes 

<template><ag-grid-vuestyle="width: 100%; height: 100%"class="ag-theme-alpine":columnDefs="columnDefs"@grid-ready="onGridReady":defaultColDef="defaultColDef":defaultColGroupDef="defaultColGroupDef":columnTypes="columnTypes":rowData="rowData"></ag-grid-vue>
</template>created() {this.columnTypes = {numberColumn: { width: 130, filter: "agNumberColumnFilter" },medalColumn: { width: 100, columnGroupShow: "open", filter: false },nonEditableColumn: { editable: false },dateColumn: {// specify we want to use the date filterfilter: "agDateColumnFilter",// add extra parameters for the date filterfilterParams: {// provide comparator functioncomparator: (filterLocalDateAtMidnight, cellValue) => {// In the example application, dates are stored as dd/mm/yyyy// We create a Date object for comparison against the filter dateconst dateParts = cellValue.split("/");const day = Number(dateParts[0]);const month = Number(dateParts[1]) - 1;const year = Number(dateParts[2]);const cellDate = new Date(year, month, day);// Now that both parameters are Date objects, we can compareif (cellDate < filterLocalDateAtMidnight) {return -1;} else if (cellDate > filterLocalDateAtMidnight) {return 1;} else {return 0;}},},},};},

 示例

右对齐和数字列

网格为向右对齐列提供了方便的快捷方式。将列定义类型设置为rightalaligned将列标头和内容向右对齐,这使得用户更容易扫描数据。 

注意:

因为右对齐用于数字,所以我们还提供了一个别名numericColumn,可用于将标题和单元格文本向右对齐。 

使用规则 

<ag-grid-vue:columnDefs="columnDefs"
</ag-grid-vue>this.columnDefs = [{ headerName: 'Column A', field: 'a' },{ headerName: 'Column B', field: 'b', type: 'rightAligned' },{ headerName: 'Column C', field: 'c', type: 'numericColumn' },
];

 右对齐列类型通过设置标题和单元格类属性来工作,如下所示。如果您手动设置headerClass或cellClass,那么您可能需要自己包含右对齐的CSS类,因为列类型属性被显式定义的列属性覆盖。

rightAligned: {headerClass: 'ag-right-aligned-header',cellClass: 'ag-right-aligned-cell'
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/112446.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

get√接口自动化核心知识点浓缩,为面试加分

日常接触到的接口自动化从实际目标可以划分为两大类&#xff1a; 1、为模拟测试数据而开展的接口自动化 这种接口自动化大多是单次执行&#xff0c;目的很明确是为了功能测试创造测试数据&#xff0c;节约人工造数据的时间和人工成本&#xff0c;提高功能测试人员的测试效率。…

chain of thought (思维链, cot)

定义 思维链 (Chain-of-thought&#xff0c;CoT) 的概念是在 Google 的论文 "Chain-of-Thought Prompting Elicits Reasoning in Large Language Models" 中被首次提出。思维链&#xff08;CoT&#xff09;是一种改进的提示策略&#xff0c;用于提高 LLM 在复杂推理…

【UE5】给模型指定面添加自定义材质

实现步骤 1. 首先我们向UE中导入一个简单的模型&#xff0c;可以看到目前该模型的材质插槽只有一个&#xff0c;当我们修改材质时会使得模型整体的材质全部改变&#xff0c;如果我们只想改变模型的某些面的材质就需要继续做后续操作。 2. 选择建模模式 3. 在模式工具栏中点击…

Linux学习之Ubuntu 20使用systemd管理OpenResty服务

sudo cat /etc/issue可以看到操作系统的版本是Ubuntu 20.04.4 LTS&#xff0c;sudo lsb_release -r可以看到版本是20.04&#xff0c;sudo uname -r可以看到内核版本是5.5.19&#xff0c;sudo make -v可以看到版本是GNU Make 4.2.1。 需要先参考我的博客《Linux学习之Ubuntu 2…

SpringBoot Mybatis 多数据源 MySQL+Oracle

一、背景 在SpringBoot Mybatis 项目中&#xff0c;需要连接 多个数据源&#xff0c;连接多个数据库&#xff0c;需要连接一个MySQL数据库和一个Oracle数据库 二、依赖 pom.xml <dependencies><dependency><groupId>org.springframework.boot</groupId&…

【Golang】go条件编译

交叉编译只是为了能在一个平台上编译出其他平台可运行的程序&#xff0c;Go 作为一个跨平台的语言&#xff0c;它提供的类库势必也是跨平台的&#xff0c;比如说程序的系统调用相关的功能&#xff0c;能根据所处环境选择对应的源码进行编译。让编译器只对满足条件的代码进行编译…

【Linux】centos8安装cmake3.27.4

第一步&#xff0c;去官网下安装包&#xff0c;一定不要下错了 下好了之后&#xff0c;用ftp软件传到云服务器或者虚拟机上&#xff0c;我用的是centos8系统&#xff0c;安装之前先准备好这些依赖项 yum install -y gcc gcc-c make automake yum install -y openssl openssl-…

多线程应用——单例模式

单例模式 文章目录 单例模式一.什么是单例模式二.如何实现1.口头实现2.利用语法特性 三.实现方式&#xff08;饿汉式懒汉式&#xff09;1.饿汉式2.懒汉式3.线程安全的单例模式4.双重检查锁5.禁止指令重排序 一.什么是单例模式 单例模式&#xff08;Singleton Pattern&#xff…

LLM本地知识库问答系统(二):如何正确使用LlamaIndex索引

推荐阅读列表&#xff1a; LLM本地知识库问答系统&#xff08;一&#xff09;&#xff1a;使用LangChain和LlamaIndex从零构建PDF聊天机器人指南 上一篇文章我们介绍了使用LlamaIndex构建PDF聊天机器人&#xff0c;本文将介绍一下LlamaIndex的基本概念和原理。 LlamaIndex简介…

视频分割合并工具说明

使用说明书&#xff1a;视频分割合并工具 欢迎使用视频生成工具&#xff01;本工具旨在帮助您将视频文件按照指定的规则分割并合并&#xff0c;以生成您所需的视频。 本程序还自带提高分辨率1920:1080&#xff0c;以及增加10db声音的功能 软件下载地址 https://github.com/c…

FPGA原理与结构——时钟IP核原理学习

一、前言 在之前的文章中&#xff0c;我们介绍了FPGA的时钟结构 FPGA原理与结构——时钟资源https://blog.csdn.net/apple_53311083/article/details/132307564?spm1001.2014.3001.5502 在本文中我们将学习xilinx系列的FPGA所提供的时钟IP核&#xff0c;来帮助我们进一…

TCP/IP五层模型、封装和分用

1.网络通信基础2.协议分层OSI七层协议模型TCP/IP五层/四层协议模型【重点】 3. 封装&分用 1.网络通信基础 IP地址&#xff1a;表示计算机的位置&#xff0c;分源IP和目标IP&#xff1b;举个例子&#xff1a;买快递&#xff0c;商家从上海发货&#xff0c;上海就是源IP&…

理虚实一体化全栈全场景云计算应用实训室解决方案

一、 云计算应用统概述 云计算应用系统是指基于云计算技术构建的应用系统&#xff0c;它将软件、数据、计算和存储资源部署在云服务器上&#xff0c;通过网络根据应用按照一定策略为用户提供相关服务。云计算应用系统广泛应用于各个领域&#xff0c;包括但不限于金融、教育、政…

Windows 系统彻底卸载 SQL Server 通用方法

Windows 系统彻底卸载 SQL Server 通用方法 无论什么时候&#xff0c;SQL Server 的安装和卸载都是一件让我们头疼的事情。因为不管是 SQL Server 还是 MySQL 的数据库&#xff0c;当我们在使用数据库时因为未知原因出现问题&#xff0c;想要卸载重装时&#xff0c;如果数据库…

零基础如何使用IDEA启动前后端分离中的前端项目(Vue)?

一、在IDEA中配置vue插件 点击File-->Settings-->Plugins-->搜索vue.js插件进行安装&#xff0c;下面的图中我已经安装好了 二、搭建node.js环境 安装node.js 可以去官网下载&#xff1a;安装过程就很简单&#xff0c;直接下一步就行 测试是否安装成功&#xff1a;要…

[JDK8下的HashMap类应用及源码分析] 数据结构、哈希碰撞、链表变红黑树

系列文章目录 [Java基础] StringBuffer 和 StringBuilder 类应用及源码分析 [Java基础] 数组应用及源码分析 [Java基础] String&#xff0c;分析内存地址&#xff0c;源码 [JDK8环境下的HashMap类应用及源码分析] 第一篇 空构造函数初始化 [JDK8环境下的HashMap类应用及源码分…

Java基础 数据结构一【栈、队列】

什么是数据结构 数据结构是计算机科学中的一个重要概念&#xff0c;用于组织和存储数据以便有效地进行访问、操作和管理。它涉及了如何在计算机内存中组织数据&#xff0c;以便于在不同操作中进行查找、插入、删除等操作 数据结构可以看作是一种数据的组织方式&#xff0c;不…

React + Next.js 搭建项目(配有对比介绍一起食用)

文章标题 01 Next.js 是什么02 Next.js 搭建工具 create-next-app03 create-react-app 与 create-next-app 的区别04 快速构建 Next.js 项目05 App Router 与 Pages Router 的区别 01 Next.js 是什么 Next.js 是一个 React 框架&#xff0c;它允许你使用 React 框架建立超强的…

Python(Web时代)—— Django数据库(多表)

两表联查 常见的两表关系&#xff1a; 一对多&#xff1a;ForeignKey 举例&#xff1a;一个学生对应多个地址 一般通过外键实现 需要在“多”的那个模型中使用ForeignKey 使用on_delete指定级联删除策略&#xff1a; CASCADE&#xff1a;当父表数据删除时&#xff0c;相对…

前端工程化

一、前端发展阶段概述 1、混沌期 整个江湖中只有一个传奇&#xff0c;就是”程序员” 这种模式下对人员的综合要求高&#xff0c;开发者既要会数据库开发&#xff08;SQL&#xff09;、又要会服务器端开发&#xff08;Java、C#、Php&#xff09;&#xff0c;还要会基本的前端…