ag-grid 学习笔记三:ag-grid设置(定义列、选择行、复选框、设置行高列宽、置顶合计行、底部合计行、行组、客户端排序)

2023-11-13

目录

一 定义列

二 选择行

三 设置复选框

四 设置行高列宽

五 置顶合计行

六 底部合计行

七 行组

八 客户端排序


一 定义列

表格的列有如下常用属性。

名称 说明
headerName 显示的列名称,和数据没有关系显示给用户看的
field 字段,headerName对于的数据字段,如上面代码“姓名”列对应的数据字段是name
pinned 列固定(冻结列)的位置,,支持left right,把列固定在左边或者右边
valueFormatter 自定义过滤函数,比如数据库status字段存储了0或1数字,想前端网页把 0 显示为正常 1显示为删除,即可使用该属性
function nameFormatter(item)
{
     if(item.value==0) return "正常";
     if(item.value==1) return "删除";
     return "itxst";  
 }
filter 过滤器刷选器,定义了过滤器后用户就可以在列头部的输入框对数据进行刷选查找
默认提供了以下几种过滤器
agNumberColumnFilter 数字过滤器
agTextColumnFilter       文本过滤器
agDateColumnFilter       日期过滤器
width, minWidth, maxWidth width, minWidth, maxWidth设置任意一个属性来控制列的宽度
hide true隐藏 false显示
sort 前端排序方式 asc 顺序 desc倒序
sortable 设置true 用户点击列的表头可以进行排序。
resizable true可以拖动改变列的大小,false不允许用户拖动改变列大小

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

二 选择行(复选框)

选择行是使用复选框来进行选择。

首先,设置列表复选框,在表头设置代码中添加如下属性便可以进行设置:

checkboxSelection: true, //设置数据复选框
headerCheckboxSelection: true  表头是否也显示复选框,用于全选反选用

 然后,设置复选框是用于多选还是单选,如果是mutiple则是多选,若是single则是单选。

  rowSelection: 'multiple', //设置多行选中 ,若是single  

 设置多行选中时,还可以控制多行选中的方式:

 rowMultiSelectWithClick:true, //单击就选中,如果为false需要按ctrl再点击才能选中多行

但是控制多选方式自己测试并未实现,还有待解决。

选中数据后,可以根据以下方式获取选中的数据,并转化为Json格式的数据。

  var rows=gridOptions.api.getSelectedRows(); //获取选中的数据
  var JsonData = JSON.stringify(rows));  //将数据转化为Json格式

 

三设置行高列宽

1.设置行高:在gridOptions 中设置rowHeight 即可。默认为25px。

动态设置行高:

//动态设置行高 重新设置为100px
function setHeight()
{
    ag.gridOptions.rowHeight=100;
    ag.gridOptions.api.resetRowHeights();
}

2.设置列宽:在gridOptions 中设置width即可。 

置顶合计行

可以通过pinnedTopRowData把一行或者多行数据置顶在表格的顶部,注意这些行不能选中、排序、刷选和分组。效果如下:

                      

 实现方式:设置置顶行数据data,然后在gridOptions中设置属性pinnedTopRowData,并把置顶行数据赋值给它,并可以用getRowStyle给置顶行数据设置样式。具体代码如下:


        //置顶行数据
        var pinnedTopRowData = [
            { name: '置顶行1', sex: '0', age: '15', 'jg': '中国', 'sf': '顶部1', 'dz': '杭州市文一西路' },
            { name: '置顶行2', sex: '1', age: '15', 'jg': '中国', 'sf': '顶部2', 'dz': '杭州市文一西路' }
        ];

        //将列和数据赋给gridOptions 
        var gridOptions = {
            columnDefs: columnDefs,   
            rowData: data, 
            onGridReady: function () {
                
                gridOptions.api.sizeColumnsToFit(); 
            },
            defaultColDef: {
                editable: true, 
                enableRowGroup: true,
                enablePivot: true,
                enableValue: true,
                sortable: true,  
                resizable: true, 
                filter: true   
            },
            pagination: true,   
            paginationAutoPageSize: true, 
            rowSelection: 'multiple',   
            rowMultiSelectWithClick: true,
            rowDeselection: true,
            pinnedTopRowData: pinnedTopRowData,  //设置置顶行数据
            getRowStyle: function (params) {  //给置顶行数据设置样式
                if (params.node.rowPinned) {
                    return { 'font-weight': 'bold', 'color': 'red' };
                }
            },

        };

       上面的合计行数据是测试定义的死数据,实际上合计行需要对某些列的数据进行合计计算,这就需要遍历怎个列表的列,将同一列的值都加起来,就可以算作是合计行。

底部合计行

设置方式与设置置顶行一样,只不过使用的属性不同,置底合计行用的是:pinnedBottomRowData属性,getRowStyle方法同样可以渲染其属性。

行组

行组,即对行进行分组,只有企业版才有的功能。

效果图如下:

                      

要实现上面的效果,只需要在定义列的时候,在需要合并的列(比如上面的姓名)上加上属性: rowGroup:true即可。然后加上 hide:true属性隐藏本列。如果不隐藏本列,效果如下,看起来不太美观。

整个界面代码如下:

<!doctype html>
<html>

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <title>设置属性</title>
    <script type="text/javascript" src="../js/ag-grid-enterprise.min.js"></script>

</head>

<body>
    <input type="button" value="获取选中行" onclick="getSelect()" />
    <div id="myGrid" style="width: 100%;height: 500px;" class="ag-theme-alpine"></div>

    <script>
        //定义表格列
        var columnDefs = [
            {
                headerName: '姓名',
                field: 'name',
                'pinned': 'left',
                filter: 'agTextColumnFilter',
                rowGroup:true,
               
              //  checkboxSelection: true, //设置数据复选框
               // headerCheckboxSelection: true  //列头设置复选框
            },
            {
                headerName: '性别',
                field: 'sex',
                type: "nonEditableColumn",
                valueFormatter: sexFormatter
            },
            {
                headerName: '年龄',
                field: 'age',
                filter: 'agNumberColumnFilter'
            },
            {
                headerName: '籍贯',
                field: 'jg'
            },
            {
                headerName: '省份',
                field: 'sf'
            },
            {
                headerName: '地址',
                field: 'dz'
            },
        ];

        //将0转化为男,把1转化为女
        function sexFormatter(item) {
            if (item.value == 0) return "男";
            if (item.value == 1) return "女";
            return "";
        }

        var data = [
            { name: '张三', sex: '0', age: '100', 'jg': '中国', 'sf': '浙江', 'dz': '杭州市古墩路1号' },
            { name: '李四', sex: '1', age: '5', 'jg': '中国', 'sf': '浙江', 'dz': '杭州市古墩路12号' },
            { name: '王五', sex: '1', age: '20', 'jg': '中国', 'sf': '浙江', 'dz': '杭州市古墩路31号' },
            { name: '王五', sex: '1', age: '26', 'jg': '中国', 'sf': '浙江', 'dz': '杭州市古墩路111号' },
            { name: '王五', sex: '0', age: '35', 'jg': '中国', 'sf': '浙江', 'dz': '杭州市古墩路12号' },
            { name: '王五', sex: '0', age: '35', 'jg': '中国', 'sf': '浙江', 'dz': '杭州市古墩路12号' },
            { name: '王五', sex: '0', age: '35', 'jg': '中国', 'sf': '浙江', 'dz': '杭州市古墩路12号' },
            { name: '王五', sex: '0', age: '35', 'jg': '中国', 'sf': '浙江', 'dz': '杭州市古墩路12号' },
            { name: '王五', sex: '0', age: '35', 'jg': '中国', 'sf': '浙江', 'dz': '杭州市古墩路12号' },
            { name: '王五', sex: '0', age: '35', 'jg': '中国', 'sf': '浙江', 'dz': '杭州市古墩路12号' },
            { name: '王五', sex: '1', age: '20', 'jg': '中国', 'sf': '浙江', 'dz': '杭州市古墩路31号' },
            { name: '王五', sex: '1', age: '26', 'jg': '中国', 'sf': '浙江', 'dz': '杭州市古墩路111号' },
            { name: '王五', sex: '0', age: '35', 'jg': '中国', 'sf': '浙江', 'dz': '杭州市古墩路12号' },
            { name: '王五', sex: '0', age: '35', 'jg': '中国', 'sf': '浙江', 'dz': '杭州市古墩路12号' },
            { name: '王五', sex: '0', age: '35', 'jg': '中国', 'sf': '浙江', 'dz': '杭州市古墩路12号' },
            { name: '王五', sex: '0', age: '35', 'jg': '中国', 'sf': '浙江', 'dz': '杭州市古墩路12号' },
            { name: '王五', sex: '0', age: '35', 'jg': '中国', 'sf': '浙江', 'dz': '杭州市古墩路12号' },
            { name: '王五', sex: '0', age: '35', 'jg': '中国', 'sf': '浙江', 'dz': '杭州市古墩路12号' },
            { name: '王五', sex: '0', age: '35', 'jg': '中国', 'sf': '浙江', 'dz': '杭州市古墩路12号' }
        ];

        //置顶行数据
        var pinnedTopRowData = [
            { name: '置顶行1', sex: '0', age: '15', 'jg': '中国', 'sf': '顶部1', 'dz': '杭州市文一西路' },
            { name: '置顶行2', sex: '1', age: '15', 'jg': '中国', 'sf': '顶部2', 'dz': '杭州市文一西路' }
        ];

          //置底部数据
          var pinnedBottomRowData = [
            { name: '置底行1', sex: '0', age: '15', 'jg': '中国', 'sf': '顶部1', 'dz': '杭州市文一西路' },
            { name: '置底行2', sex: '1', age: '15', 'jg': '中国', 'sf': '顶部2', 'dz': '杭州市文一西路' }
        ];

        //将列和数据赋给gridOptions 
        var gridOptions = {
            columnDefs: columnDefs,  //设置列名
            rowData: data,  //设置数据
            defaultColDef: {
                editable: true,//单元表格是否可编辑
                enableRowGroup: true,
                enablePivot: true,
                enableValue: true,
                sortable: true, //开启排序
                resizable: true,//是否可以调整列大小,就是拖动改变列大小
                filter: true  //开启刷选
            },
            pagination: true,  //开启分页(前端分页)
            paginationAutoPageSize: true, //根据网页高度自动分页(前端分页)
            rowSelection: 'multiple', //设置多行选中 ,若是single  
            rowMultiSelectWithClick: true,
            rowDeselection: true,
           // pinnedTopRowData:pinnedTopRowData,  //设置置顶合计行数据
          //  pinnedBottomRowData: pinnedBottomRowData ,//设置置底合计行
            getRowStyle: function (params) {  //给置顶(置底)行数据设置样式
                if (params.node.rowPinned) {
                    return { 'font-weight': 'bold', 'color': 'red' };
                }
            },
            onGridReady: function () {
                //表格创建完成后执行的事件
                gridOptions.api.sizeColumnsToFit();//调整表格大小自适应
            }
        };

        //在dom加载完成后 初始化agGrid完成
        document.addEventListener("DOMContentLoaded", function () {
            var eGridDiv = document.querySelector('#myGrid');  //myGrid 是容器div的ID
            new agGrid.Grid(eGridDiv, gridOptions);
        });
        //获取选中的数据
        function getSelect() {
            var rows = gridOptions.api.getSelectedRows();
            alert(JSON.stringify(rows));
        }
    </script>
</body>

</html>

 

客户端排序

表格有自动排序的功能,点击列头就可自动排序。

                                                 

注:

此篇文章学习资源来自 ag-grid中文教程网 ag-grid ,在此表示非常感谢。

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

ag-grid 学习笔记三:ag-grid设置(定义列、选择行、复选框、设置行高列宽、置顶合计行、底部合计行、行组、客户端排序) 的相关文章

  • 接口测试之Fiddler弱网测试

    前言 目前市面上的APP功能越来越丰富 移动端测试也越显为重要 因为用户在网速慢的情况下 你的网站 软件 总能出现各种各样的问题 请不要忽略这一点 针对在不同的网络情况下 接下来 本篇要讲述的就是在通过fiddler对APP进行模拟弱网测试
  • 每天10个前端小知识 <Day 1>

    前端面试基础知识题 1 将数组的length设置为0 取第一个元素会返回什么 设置 length 0 会清空数组 所以会返回 undefined 2 e target 和 e currentTarget 有什么区别 e target 触发事
  • Web 安全漏洞之 OS 命令注入

    什么是 OS 命令注入 上周我们分享了一篇 Web 安全漏洞之 SQL 注入 其原理简单来说就是因为 SQL 是一种结构化字符串语言 攻击者利用可以随意构造语句的漏洞构造了开发者意料之外的语句 而今天要讲的 OS 命令注入其实原理和 SQL
  • 38条Web测试经验分享

    1 页面链接检查 每一个链接是否都有对应的页面 并且页面之间切换正确 可以使用一些工具 如LinkBotPro File AIDCS HTML Link Validater Xenu等工具 LinkBotPro不支持中文 中文字符显示为乱码
  • 每天10个前端小知识 <Day 7>

    前端面试基础知识题 1 什么是尾调用优化和尾递归 尾调用的概念非常简单 一句话就能说清楚 就是指某个函数的最后一步是调用另一个函数 function f x return g x 上面代码中 函数f的最后一步是调用函数g 这就叫尾调用 尾调
  • 每天10个前端小知识 <Day 5>

    前端面试基础知识题 1 typeof 与 instanceof 有什么区别 typeof与instanceof都是判断数据类型的方法 区别如下 typeof会返回一个变量的基本类型 instanceof返回的是一个布尔值 instanceo
  • Android SDK开发艺术探索(五)安全与校验

    一 前言 本篇是Android SDK开发艺术探索系列的第五篇文章 介绍了一些SDK开发中安全方面的知识 包括资源完整性 存储安全 权限校验 传输安全 代码混淆等知识 通过基础的安全配置为SDK保驾护航 探索SDK开发在安全方面的最佳实践
  • 【gee】下载modis土地利用类型

    var china ee FeatureCollection projects assets china boundary var lc dataset ee ImageCollection MODIS 061 MCD12Q1 filter
  • 低代码配置-组件列表设计

    过滤字段功能 配置了api 启用 输出配置 filter type Array default gt
  • 低代码配置-属性配置面板设计

    模块设计 tab项切换 组件基础属性 组件数据属性 组件事件属性 表单属性 模块输出函数设计 tab切换函数 列表表单属性 数据来源 调用接口时一次赋予 无需使用selectItem 如需使用 归入基础属性 列表标题 是否展示筛选区域
  • 30天精通Nodejs--第十九天:express-文件上传下载

    目录 前言 环境准备与依赖安装 文件上传功能实现 引入并配置express fileupload中间件 注意事项 文件下载功能实现 结语 前言 文件的上传和下载是许多应用程序必备的功能 Node js的Express框架同样可以通过集
  • chrome浏览器无法在地址栏输入内容搜索问题解决--图文

    关于日常遇到的小问题解决记录一下 1 导航栏录入信息后跳转错误 2 解决办法 默认百度搜索引擎地址错误 百度正确的搜索格式是 http www baidu com s wd s chrome浏览器中百度的搜索格式是 http www bai
  • 考虑光伏出力利用率的电动汽车充电站能量调度策略研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 数据
  • 考虑光伏出力利用率的电动汽车充电站能量调度策略研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 数据
  • 每日变更的最佳实践

    在优维公司内部 我们采用发布单的方式进行每天的应用变更管理 这里给各位介绍优维的最佳实践 变更是需要多角色合作的 而且他是整体研发流程的一部分 在优维内部 我们坚持每日变更 打通开发环节到最终发布上线的全过程 在保证质量的前提下 尽可能提升
  • 如何在 Python 脚本中使用 Google OAuth2

    在使用 Python 脚本将视频上传到 YouTube 频道时 若希望将视频上传到第二个频道 需要解决 OAuth2 授权的问题 解决方案 创建新的 Google Cloud 项目 from google oauth2 import ser
  • Vue Ag-grid 一次隐藏/取消隐藏所有列

    我试图在父组件的数据更改时隐藏和取消隐藏 ag grid 中的所有列 这是我的子组件
  • Ag-grid 捆绑包尺寸太大

    我正在使用 Angular 6 开发一个 Web 应用程序 我有一个 Ag grid 企业版 Ag grid 文档说 我们必须导入所有农业网格角 农业网格社区 and 农业电网企业与农网企业合作 编译后 主包总大小超过 1 5 MB 在那里
  • ag-grid - 删除具有无限行模型的行

    我正在尝试使用具有无限行模型和分页功能的网格来删除行 我不确定如何删除特定行并更新内部模型 而无需刷新网格 从而发出新的 ajax 请求 我已经读过这个线程 https github com ag grid ag grid issues 1
  • Angular:在 agGrid 中的动态列上设置默认排序的最佳方法

    我正在开发 agGrid 我们没有明确定义列 我一生都无法弄清楚如何在我的一列上设置默认排序 在初始化时我们这样做 public ngOnInit void this gridOptions defaultColDef this selec

随机推荐