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。
答案 0 :(得分:1)
在您提供的页面上
每次网格检测到过滤器更改时,isExternalFilterPresent 都会被精确调用一次。 如果外部过滤处于活动状态,则应返回true ,否则返回false。如果返回true,则在过滤时将调用didExternalFilterPass(),否则将不调用dosExternalFilterPass()。
所以在我看来您应该尝试这样的事情:
isExternalFilterPresent={()=> {return true;} }