如何在React中使用外部过滤器(ag-grid)

时间:2019-05-28 19:54:17

标签: javascript reactjs ag-grid

Ag-grid does not give a react example on how to use external filters with React。无论如何,我都遵循了该示例,并尝试像我一样声明性地使用gridOptions:

<AgGridReact
    rowData={this.state.rowData}
    columnDefs={this.state.columnDefs}
    defaultColDef={this.state.defaultColDef}
    groupDefaultExpanded={this.state.groupDefaultExpanded}
    masterDetail={true}
    detailRowHeight={this.state.detailRowHeight}
    detailCellRendererParams={this.state.detailCellRendererParams}
    onGridReady={this.onGridReady}
    enableRangeSelection={true}
    pagination={true}
    sideBar={this.state.sideBar}
    isExternalFilterPresent={true}
    doesExternalFilterPass={(node) => {
        alert(node);
    }}
/>

我像示例一样手动触发filterChanged

<Col xs='3'>
    <Field
        component={renderSelectField}
        name="relatorio-filtro"
        hintText='100'
        variant="outlined"
        selectStyle={relatorioFiltro}
        disable={() => { }}
        onChange={(e) => {
            this.gridApi.onFilterChanged()
        }}
    >
        <div value="15" key="15">{"15"}</div>
        <div value="25" key="25">{"25"}</div>
        <div value="50" key="50">{"50"}</div>
        <div value="100" key="100">{"100"}</div>
        <div value="200" key="200">{"200"}</div>
    </Field>
</Col>

但这没有用,警报永远不会发生。我怀疑该功能不适用于React。

1 个答案:

答案 0 :(得分:1)

在您提供的页面上

  每次网格检测到过滤器更改时,

isExternalFilterPresent 都会被精确调用一次。 如果外部过滤处于活动状态,则应返回true ,否则返回false。如果返回true,则在过滤时将调用didExternalFilterPass(),否则将不调用dosExternalFilterPass()。

所以在我看来您应该尝试这样的事情:

isExternalFilterPresent={()=> {return true;} }