.png&w=3840&q=75)
AG Grid テーブル内で特定の行を隠す・非表示にする方法 (React)
公開日:
更新日:
デモ
例えば下記のテーブルで「Price」が30000以下の行は非表示にしてみます。↓
成功するとこんな形になります。↓
やり方 「doesExternalFilterPass」「isExternalFilterPresent」を利用する
example.tsx
1/* eslint-disable @typescript-eslint/no-unused-vars */
2"use client";
3import { ClientSideRowModelModule } from "@ag-grid-community/client-side-row-model";
4// Theme
5import { ColDef, ModuleRegistry } from "@ag-grid-community/core";
6import { AgGridReact } from "@ag-grid-community/react";
7// React Grid Logic
8import "@ag-grid-community/styles/ag-grid.css";
9// Core CSS
10import "@ag-grid-community/styles/ag-theme-quartz.css";
11import { useState } from "react";
12
13ModuleRegistry.registerModules([ClientSideRowModelModule]);
14
15// Row Data Interface
16interface IRow {
17 make: string;
18 model: string;
19 price: number;
20}
21
22type isReadOnly = {
23 value: boolean;
24};
25
26// Create new GridExample component
27const AGGridDemoTable = (props: isReadOnly) => {
28
29 const doesExternalFilterPass = (node: any) => {
30 if (node.data.price <= 30000) {
31 return false;
32 } else {
33 return true;
34 }
35 };
36
37 const { value } = props;
38 // Row Data: The data to be displayed.
39 const [rowData, setRowData] = useState<IRow[]>([
40 { make: "Tesla", model: "Model Y", price: 64950 },
41 { make: "Ford", model: "F-Series", price: 33850 },
42 { make: "Toyota", model: "Corolla", price: 29600 },
43 { make: "Mercedes", model: "EQA", price: 48890 },
44 { make: "Fiat", model: "500", price: 15774 },
45 { make: "Nissan", model: "Juke", price: 20675 },
46 ]);
47
48 // Column Definitions: Defines & controls grid columns.
49 const [colDefs, setColDefs] = useState<ColDef<IRow>[]>([
50 { field: "make" },
51 { field: "model" },
52 { field: "price" },
53 ]);
54
55 const defaultColDef: ColDef = {
56 flex: 1,
57 editable: true,
58 };
59
60 // Container: Defines the grid's theme & dimensions.
61 return (
62 <div
63 className={"ag-theme-quartz-dark"}
64 style={{ width: "100%", height: "100%" }}
65 >
66 <AgGridReact
67 rowData={rowData}
68 columnDefs={colDefs}
69 defaultColDef={defaultColDef}
70 readOnlyEdit={value}
71 doesExternalFilterPass={doesExternalFilterPass}
72 isExternalFilterPresent={() => true}
73 />
74 </div>
75 );
76};
77
78export default AGGridDemoTable;
79
ポイント
isExternalFilterPresent
をtrueにすることでフィルター機能が有効になります。
ここがfalseだと doesExternalFilterPass
を設定していても機能しなくなります。
doesExternalFilterPass
はどのような条件で非表示にするかを決めるためのPropsです。

今回紹介したやり方は「行を非表示にする」ものなのでテーブル自体の大きさは変わらないです。
※ 参考記事 : stack overflow 「Ag-grid hiding rows」
※ 参考記事 : AG Grid公式ドキュメント 「External Filter」
本記事は以上になります。
ご一読頂きありがとうございました。