如何将快速过滤器与服务器端/无限行模型一起使用?

2024-01-12

As per 文档:快速过滤器 https://www.ag-grid.com/javascript-grid-filter-quick/#server-side-data, 快速过滤器与clientSide行模型。

我们正在使用serverSide行模型为ag-grid /questions/tagged/ag-grid我们需要对客户端的数据(在网格的缓存块中)使用快速过滤器。

我想使用过滤管[rowData]="myRowData",但是对于这个行模型,我没有从中获取任何数据myRowData.

例如,如果你看一下这个 plunk服务器端行模型-快速过滤 https://plnkr.co/edit/lQcwDzfaBoh5OASj2d9e?p=preview,我已经分配了[rowData]="rowData"在标记中并将其初始化为[].

从服务器加载初始块后,我当时假设缓存块数据应该可以用它访问,这样使用角度管道,我就能够在客户端过滤掉数据(模仿快速过滤器)serverSide行模型)。就像是[rowData]="rowData | filter: filterText"- 就像我们以前做的那样角js /questions/tagged/angularjs

但恐怕缓存数据无法访问rowData.

我们如何才能以某种方式将快速过滤器与 ag-grid 一起使用serverSide行模型?


我想说这不是一件容易的事。

但解决方法如下:

  1. 正如你已经提到的quickFilter https://www.ag-grid.com/javascript-grid-filter-quick/ is a clientSide模型类型特征
  2. But no one has cancelled the setFilterModel https://www.ag-grid.com/javascript-grid-filtering/#example-get-set-all-filter-models way of usages

    这需要大量的修改,并且可能会破坏某些东西(您必须在解决方案中检查它并然后写反馈)

首先,setFilterModel无法使用虚拟数据(我们必须定义column尤其是给quickFilter logic)

{
    field:'-', would be used as a reference
    hide:true, - hide in grid data
    lockVisible:true, - disable visibility changing via menu
    filter:"agTextColumnFilter", - require for setFilterModel
    filterParams:{
      newRowsAction: "keep"
    }
},

接下来,我们需要创建一个解决方法filterModel in datasource

getRows: function(params) {
    setTimeout(function() {
        var dataAfterSortingAndFiltering = sortAndFilter(data, params.sortModel, params.filterModel);
        var rowsThisPage = dataAfterSortingAndFiltering.slice(params.startRow, params.endRow);
        var lastRow = -1;
        if (dataAfterSortingAndFiltering.length <= params.endRow) {
            lastRow = dataAfterSortingAndFiltering.length;
        }
        params.successCallback(rowsThisPage, lastRow);
    }, 3000);
}

function sortAndFilter(allOfTheData, sortModel, filterModel) {
  return sortData(sortModel, filterData(filterModel, allOfTheData));
}
function sortData(sortModel, data) {
  ... sort logic here (doesn't matter for now) ...
}

现在关于quickFilter逻辑,我们已经定义了dummy列及其使用方法:

setFilterModel 将仅接受现有的列名称(在我们的例子中为“-”)

并使用有限的对象道具:但我们将使用filter(如实际案例中使用的)

applyFilter(){
    this.gridApi.setFilterModel({"-":{filter: this.filterText}})
}

最后一个实施点是filterData功能

function filterData(filterModel, data) {
  let filterPresent = filterModel && Object.keys(filterModel).length > 0;
  if (!filterPresent) { - if filter model is empty - skip it
    return data;
  }
  data = data.filter(i=>{
    if(Object.keys(i).some(k => i[k] && i[k].toString().toLowerCase().includes(filterModel['-'].filter)))
      return i;
  })
  return data;
}

将探索每个对象,如果有任何属性包含quickFiltervalue - 它将出现在结果中

此外,一旦滚动超出现有范围(无限滚动情况),请求的数据将被此属性过滤

*不确定是否应要求检查重复数据

My sample https://plnkr.co/edit/qThVzOuVqgvijQVrlCtX?p=preview

Your modified sample https://plnkr.co/edit/mWUmwOBAV5wjBEhwkMV5?p=preview

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

如何将快速过滤器与服务器端/无限行模型一起使用? 的相关文章

  • 使用 ag-grid 单元格内的值和 ID 进行选择?

    我对 ag grid 很陌生 正在评估它 我的项目的数据有多个查找表 即 Foo 有 Bar 类别 Baz 品牌和 Boo 类别 我希望能够在 ag grid 中编辑它们 不幸的是 这些查找表不在我的控制范围内 而且我并不总是有连续的 ID
  • 右键单击量角器

    我正在尝试使用量角器右键单击一个元素 该元素是农业网格中的一个单元格 我正在尝试使用我能找到的一些早期建议 唯一没有给我带来错误的建议如下 browser actions mouseMove elementVar perform brows
  • ag-grid v 22.1.1 升级后 ng build --prod 失败

    我已经开始使用ag grid从版本 18 开始 目前为 20 0 0 我正在升级到最新版本 22 1 1 解决由于重大更改而导致的警告 错误后 一切 包括 ng服务 都工作正常 但是 当我尝试在产品模式下构建角度应用程序时 它失败了 app
  • Ag-Grid 链接与单元格中的链接

    我正在使用 ag grid 构建 Angular 4 应用程序 但在尝试找出如何在单元格中放置链接时遇到问题 有人可以帮我解决这个问题吗 谢谢 请检查这个demo https plnkr co edit anJSAE p preview c
  • AgGrid 自定义 html 拖动

    我只是在考虑更改 ag 网格组件的拖动悬停 我找不到太多关于它的信息 有人知道如何在拖动模式下更改行的样式吗 我的目标是拥有不同的动画 整行 例如材质 UI UX https material io design components li
  • 如何禁用一行上的行组扩展功能?

    在没有任何特定解决方案的情况下进行了大量搜索之后 我不得不问这个问题 我想要的是隐藏单个组行上的行组图标 如下图所示 我有一个组行 其中只有一条记录 该记录已显示在顶行中 我想隐藏该单条记录上的折叠图标 当组行超过一行时 仅显示折叠 展开图
  • Ag-grid:使用 AggFunc 时如何更改定义列标题名称?

    对于给定的列定义 当使用 aggFunc 时 headerName 以 func string 格式显示 我只希望标题显示我定义的字符串 当 AggFunc 为 null 时 此行为不存在 const columnDef any heade
  • 如何获取Angular2中ag网格中选定行的数据?

    我在 angular2 中设置了 ag grid 它工作正常 但我无法获取所选行的值 我的控制台窗口中没有错误 这就是我初始化网格的方式 import Component from angular2 core Component selec
  • 在ag-grid中,选项angularCompileRows有什么作用?

    我试图将单个细胞放入ag grid开火ng click今天针对父控制器中的作用域方法发生了事件 并尝试了很多不同的事情 在查看了人们发布的一些工作代码后 我注意到每个人都在设置角度编译行 to true in the 网格选项 我尝试转动角
  • Ag-grid 捆绑包尺寸太大

    我正在使用 Angular 6 开发一个 Web 应用程序 我有一个 Ag grid 企业版 Ag grid 文档说 我们必须导入所有农业网格角 农业网格社区 and 农业电网企业与农网企业合作 编译后 主包总大小超过 1 5 MB 在那里
  • 是否有高级 Ag-Grid 事件来侦听列状态的任何更改?

    我将 Ag Grid 与 Angular 一起使用 我想听听any修改列状态的事件 截至目前 我必须列出所有事件 columnVisible onCol event columnMoved onCol event etc 是否有我可以依赖的
  • Angular Ag-Grid 无法正确显示

    我正在尝试使用角度Ag Grid https www ag grid com 在我的网络应用程序中 我已经遵循了这些教程 角网格 开始使用 ag Grid https www ag grid com angular getting star
  • 如何获取和设置 ag-grid 状态?

    如何获取并重新设置 ag grid 表的状态 我的意思是 正在显示哪些列 以什么顺序 使用什么排序和过滤等 Update getColumnState 和 setColumnState 似乎接近我想要的 但我无法弄清楚应该保存和恢复状态的回
  • 从 cellRendererFramework 向父级发出事件

    使用 ag grid 您可以定义您的GridOptions columnDefs列信息包括cellRendererFramework 我有一个正在使用的组件cellRendererFramework其中包括通过单击其模板中的按钮触发的事件
  • Angular:在 agGrid 中的动态列上设置默认排序的最佳方法

    我正在开发 agGrid 我们没有明确定义列 我一生都无法弄清楚如何在我的一列上设置默认排序 在初始化时我们这样做 public ngOnInit void this gridOptions defaultColDef this selec
  • 计算行:如何使用 AG Grid 根据同一列中其他行的值计算特定列的单元格值?

    我想使用同一列中其他行的值对特定行实施自定义计算 我发现AG Grid提供了定义的能力列定义表达式 https www ag grid com javascript data grid cell expressions and aggFun
  • 如何对 AG-Grid 中标题名称为空的列进行排序

    如何对 AG Grid 中带有空标题的列进行排序 正在传递的 colDef var columnDefs headerName sortable true suppressToolPanel true field 笨蛋 https plnk
  • 更改 ag-grid 上的页面和缓存块大小会导致项目无限加载

    我希望使用 ag grid 的 服务器端 模式重新获取每个页面的数据 为了做到这一点 我将 maxBlocksInCache 1 和 cacheBlockSize 设置为等于每页的项目数 到这里为止一切正常 现在 当我更改每页的项目数时 网
  • ag grid : js : 如何查找应用了哪个过滤器

    我的数据显示在农业网格中 它有 4 列名称 年龄 运动并具有以下数据 data https i stack imgur com 3B3y6 png 现在 当我根据 运动 过滤数据时 可以取消选中 空白 我得到以下数据 过滤数据 https
  • 角度2中未定义的值

    我正在创建一个应用程序 在其中使用 Ag Grid api 在网页上列出我的数据库内容 Ag grid 有一个预定义的 api 来获取所选行的内容 这是我的代码 export class customer entryComponent pu

随机推荐