如何在物料表表中显示选择过滤器表Reactjs

问题描述 投票:0回答:1

我正在使用material-table显示表格数据。并为表格外的特定列添加过滤器。

示例:https://material-table.com/#/docs/features/filtering

我想仅使用表外部而不是列标题内部的选择下拉列表仅过滤“出生地”数据

reactjs material-ui material-table
1个回答
0
投票

我认为材料表仅包含基本功能,因此您提出的要求不是开箱即用的。

最简单的解决方案是将表包装在其他组件内,该组件将包含表和在jsx,birthPlacefilteredTableData中处于状态和tableData作为类属性的“出生地”选择。

最初

filteredTableData = tableData

并且代理到表格组件。在birthPlaceSelect onChange事件中,您应该实现过滤tableData并将其设置为filteredTableData

因此,基本上,您可以自己过滤表外的数据。

class FilterableTable extends Component {
  state = {
    filteredTableData: [],
    birthPlace: null,
  };

  componentDidMount() {
    // load data or get it from store in loadDataFromServer
    loadDataFromServer().then(data => {
      // save initial data to state
      this.setState({ filteredTableData: data });
      // and save copy to class prop
      this.data = data;
    });
  }

  onFilterValueChanged = ev => {
    if (ev.target.value) {
      this.setState({
        filteredTableData: this.data.filter(row =>
          row.birthPlace.contains(ev.target.value)
        ),
      });
    }else{
      this.setState({
        filteredTableData: this.data        
      });
    }
  };


  render() {
    const { filteredTableData, birthPlace } = this.state;

    return (
      <div>
        <input value={birthPlace} onChange={this.onFilterValueChanged} />
        <MaterialTable data={filteredTableData} />
      </div>
    );
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.