首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在ag网格中实现查找列值和替换为新值(如查找和替换)

如何在ag网格中实现查找列值和替换为新值(如查找和替换)
EN

Stack Overflow用户
提问于 2019-09-09 07:00:30
回答 1查看 251关注 0票数 0

我是第一次接触ag。我想实现一个功能,我可以找到每个列值,并替换为单个列中的新值。

EN

回答 1

Stack Overflow用户

发布于 2020-09-05 15:14:18

由于ag-grid不提供查找/替换的方法,您可以使用以下算法进行查找/替换。

代码语言:javascript
运行
AI代码解释
复制
foundCell = [];
        foundIndex = 0;
        message = '';
        //Find text in ag-grid
        find(findText: string) {
            let found = false;
            let rowNodes: any = [];
            let focusedCell = this.gridApi.getFocusedCell();
            if (focusedCell) {
              let lastFoundObj: any;
              if (this.foundCell.length > 0) {
                lastFoundObj = this.foundCell[this.foundCell.length - 1];
                if (!(lastFoundObj.rowIndex == focusedCell.rowIndex && lastFoundObj.field == focusedCell.column.colId)) {
                  this.foundCell = [];
                  this.foundIndex = focusedCell.rowIndex;
                }
              }
            }
            this.gridApi.forEachNode(function (node,rowIndex) {
                  rowNodes.push(node);
            });
            for(let i=this.foundIndex; i < rowColumnData.rowNodes.length ; i++) {
              let node = rowColumnData.rowNodes[i];
              var rowObj = node.data;
              found = false;
              for (var key in rowObj) {
                if (rowObj[key].includes(findText) && !this.checkIfAlreadyFound(key, node.rowIndex)) {
                  found = true;
                  this.foundCell.push({ 'field': key, 'rowIndex': node.rowIndex});
                  break;
                }
              }
              if (found) {
                break;
              }
            }
            if (found) {
              let lastFoundCell = this.foundCell[this.foundCell.length-1];
              this.gridApi.ensureIndexVisible(lastFoundCell.rowIndex, 'middle');
              this.gridApi.ensureColumnVisible(lastFoundCell.field);
              this.gridApi.setFocusedCell(lastFoundCell.rowIndex,lastFoundCell.field);
              this.found = true;
            } else {
              this.foundIndex = 0;
              this.foundCell = [];
              this.found = false;
              this.message = 'Not found';
            }
        }
        
        
        //Replace text in ag-grid
        replace(findText: string, replaceWith: string, isReplaceAll: boolean) {
            if (this.found || isReplaceAll) {
              let focusedCell: any;
              var cell: any;
              let rowNodes = [];
              focusedCell = this.gridApi.getFocusedCell();
              if (focusedCell) {
                cell = { rowIndex: focusedCell.rowIndex, field: focusedCell.column.colId };
              } else {
                cell = this.foundCell[this.foundCell.length - 1];
              }
              this.gridApi.forEachNode(function (node,rowIndex) {
                  rowNodes.push(node);
              });
              var rowNode: any;
              var newCellValue: any;
              if (isReplaceAll) {
                let allfoundCell = this.findAllCells(rowNodes,findText);
                for (var i = 0; i < allfoundCell.length; i++) {
                  cell = allfoundCell[i];
                  rowNode = gridApi.getDisplayedRowAtIndex(cell.rowIndex);
                  newCellValue = this.gridApi.getValue(cell.field, rowNode).replace(findText,replaceWith);
                  rowNode.setDataValue(cell.field, newCellValue);
                }
              } else {
                rowNode = this.gridApi.getDisplayedRowAtIndex(cell.rowIndex);
                newCellValue = this.gridApi.getValue(cell.field, rowNode).replace(findText,replaceWith);
                if (newCellValue != rowNode.data[cell.field]) {
                  rowNode.setDataValue(cell.field, newCellValue);
                } 
              }
              this.found = false;
            }
         }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57849189

复制
相关文章
pycharm 查找替换_word查找和替换功能可以实现
ctr(control) + shift + r (replace: 替换)
全栈程序员站长
2022/09/25
1.2K0
pycharm 查找替换_word查找和替换功能可以实现
pycharm查找与替换_python替换dataframe中的值
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/175276.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/27
6.2K0
Objective-C实现二分查找和插值查找
二分查找 二分查找 又称折半查找,要求数组必须是有序的数列,是一种有序查找算法。二分查找的时间复杂度是O(log n)。它充分利用了元素间的次序关系,采用分治策略,可在最坏的情况下用O(log n)完成搜索任务。 它的基本思想是:将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2]则找到x,算法终止。如果x < a[n/2],则我们只要在数组a的左半部继续搜索x(这里假设数组元素呈升序排列)。如果x>a[n/2],则我们只要在数组a的右 半部继续搜索x。 有时候面
VV木公子
2018/06/05
8.3K0
Pandas 查找,丢弃列值唯一的列
数据清洗很重要,本文演示如何使用 Python Pandas 来查找和丢弃 DataFrame 中列值唯一的列,简言之,就是某列的数值除空值外,全都是一样的,比如:全0,全1,或者全部都是一样的字符串如:已支付,已支付,已支付…
萝 卜
2022/05/12
5.9K0
Pandas 查找,丢弃列值唯一的列
散列查找和哈希查找_散列检索
散列技术是在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使得每个关键字key对应一个存储位置f(key)。建立了关键字与存储位置的映射关系,公式如下:
全栈程序员站长
2022/11/15
9160
如何在 SQL 中查找重复值? GROUP BY 和 HAVING 查询示例教程
如果您想知道如何在表中查找重复值,那么您可以在 SQL 中使用 GROUP BY 和 HAVING 子句。 使用 group by 您可以创建组,如果您的组有超过 1 个元素,则意味着它是重复的。 例如,您需要编写一个 SQL 查询来查找名为 Person 的表中的所有重复电子邮件。 这是一个流行的 SQL Query 面试问题以及 Leetcode 问题。 您可以看到电子邮件 a@b.com 是重复的电子邮件,因为它在表格中出现了两次。 您需要编写一个查询来查找所有重复值。
从大数据到人工智能
2022/03/30
15.5K0
插值查找
3.int midIndex = low + (high - low) * (key -arr[low]) / (arr[high] - arr[low]); //插值索引
JusterZhu
2022/12/07
8890
插值查找
vim中优雅地查找和替换
这篇文章来详细介绍 Vim 中查找相关的设置和使用方法。包括查找与替换、查找光标所在词、高亮前景/背景色、切换高亮状态、大小写敏感查找等。 查找 在normal模式下按下/即可进入查找模式,输入要查找的字符串并按下回车。Vim会跳转到第一个匹配。按下n查找下一个,按下N查找上一个。 Vim查找支持正则表达式,例如/vim匹配行尾的"vim"。需要查找特殊字符需要转义,例如/vim\ 注意查找回车应当用\n,而替换为回车应当用\r(相当于<CR>)。 大小写敏感查找 在查找模式中加入\c表示大小写不敏感查找,
入门笔记
2022/06/02
3.6K0
LeetCode - 查找和替换模式
原题地址:https://leetcode-cn.com/problems/find-and-replace-pattern/
晓痴
2019/07/30
8670
Sql Server 中 根据具体的值 查找该值所在的表和字段
在我们的工作中经常遇到这样一个问题,在页面中保存一条数据,有个字段值为“张三”,但是,不知道这条数据保存在了哪个表中,现在我们想要追踪该值是存储到了那个表的那个字段中,具体要怎么操作呢?下面我们可以借助存储过程来解决这一问题
jamesjiang
2022/11/20
6.7K0
Sql Server 中 根据具体的值 查找该值所在的表和字段
Java 查找 List 中的最大值、最小值Java 查找 List 中的最大值、最小值
Java 查找 List 中的最大值、最小值 java> List<Long> list = new ArrayList(); java.util.List<java.lang.Long> list = [] java> list.add(1L) java.lang.Boolean res1 = true java> list.add(2L) java.lang.Boolean res2 = true java> Collections.max(list) java.lang.Long res3 = 2 j
一个会写诗的程序员
2018/08/17
4K0
关于在vim中的查找和替换
在normal模式下按下/即可进入查找模式,输入要查找的字符串并按下回车。 Vim会跳转到第一个匹配。按下n查找下一个,按下N查找上一个。
休辞醉倒
2019/07/25
26.2K0
插值查找算法
插值查找(Insert Value Search)是二分查找的一种改良,主要是改良了mid的值,mid的值由原来的mid = (left + right) / 2而变成了自适应获取mid的值mid = left + (num - arr[left]) / (arr[right] - arr[left]) * (right - left),上述公式是前辈们推导出来的,其余和二分查找一样。
红目香薰
2022/11/29
8470
Excel查找值技巧,根据两个值来查找相对应的值
在Excel中,查找的需求多种多样,关键是看你怎么样搭配各种函数来实现了。如下图1所示,要根据代码和编号两个值来查找对应的数量。
fanjy
2023/09/15
3.2K0
Excel查找值技巧,根据两个值来查找相对应的值
vim基础命令,查找和替换
vim简单的命令用着还好。比如插入,删除,查询。但替换就用的比较少。所以,还是需要用的时候拿出来对照者看。
Ryan-Miao
2019/08/24
2.9K0
C#查找算法2:插值查找
插值查找,有序表的一种查找方式。插值查找是根据查找关键字与查找表中最大最小记录关键字比较后的查找方法。插值查找基于二分查找,将查找点的选择改进为自适应选择,提高查找效率。
明志德道
2023/10/21
1790
C#查找算法2:插值查找
查找-散列查找
散列技术是在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使得每个关键字key对应一个存储位置f(key)。查找时,根据这个确定的对应关系找到给定值key的映射f(key),若查找集合中存在这个记录,则必定在f(key)的位置上。
全栈程序员站长
2022/08/28
1.5K0
查找-散列查找
如何在无序数组中查找第K小的值
(1)最简单的思路直接使用快排,堆排或者归并排,排序之后取数组的k-1索引的值即可,时间复杂度为O(nLogn)
我是攻城师
2019/05/31
6K0
插值查找易懂解析
注意:插值查找和二分查找都需要数组是有序的才可以进行查找 假设我有一组有序的线性表{1,2,3,4,...,20},我们来利用二分查找来找1,看看它会经过几次能找到我们的1代码如下: /** * * @param arr 要查找的数组 * @param left 左边下标 * @param right 右边下标 * @param findVal 要查找的数 */ public static int binarySearch(int[] arr,int left,int right,int
阮键
2020/07/13
6790
在vim和vi中查找和替换字符串
Vim是最受欢迎的命令行文本编辑器。它预装在macOS和大多数Linux发行版上。在Vim中查找和替换文本非常容易。 基本查找和替换 在Vim中,可以使用:substitute(:s)命令来查找和替换文本。 要在Vim中运行命令,必须处于normal模式,这是启动编辑器时的默认模式。要从其他任何模式返回normal模式,只需按 Esc键。 替换命令的一般形式如下: :[range]s/{pattern}/{string}/[flags] [count] 该命令在[range]中的每一行中搜索{patter
入门笔记
2022/06/02
17.1K0

相似问题

添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档