反応ブートストラップテーブルからの選択に基づいてjson配列をフィルタリングするにはどうすればよいですか?

ユーザー

私はReactJSを学ぼうとしている初心者です。私はreactブートストラップテーブルを使用してjsonから製品のリストをロードしています。比較ボタンをクリックすると、ユーザーの選択に基づいてjsonをフィルタリングしたいと思いました。ここで、「PartNumber」はすべての製品の一意のフィールドです。

フィルタリングされたリスト「onButtonSubmit」を取得する方法を教えてください。フィルタリングされた製品の部品番号を「選択済み」で取得できます。'selected'のパーツ番号に一致するjson配列をフィルタリングする必要があります。要件に応じて結果をフォーマットします。

以下は私のコードであり、これは私のJSONです-https ://jsonblob.com/412d2ac9-2f7c-11e9-9080-8bc34cc6c646

import React from 'react';
import MYResult from '../json/results.json';
import BootstrapTable from 'react-bootstrap-table-next';

class Container extends React.Component {

  state = {
    data: MYResult.Products || [],
    columns: MYResult.ParametricList_Attributes || [],
    isCompareClicked: false,
    selected: []
  };

  onButtonSubmit = (row, isSelect) => {
    this.setState({ isCompareClicked: true })
    if (isSelect) {
      this.setState(() => ({
        selected: [...this.state.selected, row.PartNumber]
      }));
    } else {
      this.setState(() => ({
        selected: this.state.selected.filter(x => x === row.PartNumber)
      }));
    }
    console.log("selectd is -- " + this.state.selected)
  }

  render() {
    var selectRowProp = {
      mode: "checkbox",
      clickToSelect: true,
      selected: this.state.selected,
      onSelect: this.onButtonSubmit
    };

    return (
      <div>
        <button onClick={this.onButtonSubmit}>Compare</button>
        <br />
        <br />
        <BootstrapTable keyField='PartNumber' selectRow={selectRowProp}
          data={this.state.data} columns={this.state.columns} />
      </div>
    );
  }

}

export default Container;
ヴァルンS

onSelectアクションとボタンクリックアクションの両方に同じ関数を渡したようですが、操作が異なります。また、将来の問題を回避するために可能なすべてのアクションを処理します

このサンドボックスの完全に機能するコードをチェックアウトする

import React from "react";
import ReactDOM from "react-dom";
import MYResult from "../json/results.json";
import BootstrapTable from "react-bootstrap-table-next";

import "./styles.css";

class Container extends React.Component {
  state = {
    data: MYResult.Products || [],
    pristineData: MYResult.Products || [],
    columns: MYResult.ParametricList_Attributes || [],
    isCompareClicked: false,
    selected: []
  };

  onSelectClick = (row, isSelect) => {
    let modifiedRow;
    if (isSelect) {
      modifiedRow = [...this.state.selected, row.PartNumber];
    } else {
      modifiedRow = this.state.selected.filter(x => x !== row.PartNumber);
    }
    this.setState({ isCompareClicked: true, selected: modifiedRow });
  };
  onButtonClick = () => {
    const data = this.state.data;
    const selectedData = this.state.selected;
    if (selectedData.length < 2) {
      alert("atleast two data needed to compare");
      return;
    }
    let filterredData = data.filter(row =>
      selectedData.includes(row.PartNumber)
    );
    this.setState({ data: filterredData });
  };

  onSelectAll = (isSelect, rows) => {
    let newRows = isSelect ? rows.map(row => row.PartNumber) : [];
    this.setState({ selected: newRows });
  };

  onClearClick = () => {
    this.setState(state => ({ data: state.pristineData, selected: [] }));
  };

  render() {
    console.log(this.state);
    var selectRowProp = {
      mode: "checkbox",
      clickToSelect: true,
      selected: this.state.selected,
      onSelect: this.onSelectClick,
      onSelectAll: this.onSelectAll
    };

    return (
      <div>
        <button onClick={this.onButtonClick}>Compare</button>
        <button onClick={this.onClearClick}>Clear</button>
        <br />
        <br />
        <BootstrapTable
          keyField="PartNumber"
          selectRow={selectRowProp}
          data={this.state.data}
          columns={this.state.columns}
        />
      </div>
    );
  }
}

const rootElement = document.getElementById("root");
ReactDOM.render(<Container />, rootElement);

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

reactのドロップダウン値に基づいてブートストラップテーブルをフィルタリングするにはどうすればよいですか?

分類Dev

Rシャイニー内のリーフレットマップからの入力に基づいてデータテーブルをフィルタリングするにはどうすればよいですか?

分類Dev

ブートストラップテーブルの列でフィルタリングするにはどうすればよいですか?

分類Dev

MSExcel。入力範囲に基づいてピボットテーブルをフィルタリングするにはどうすればよいですか?

分類Dev

値の列に基づいてExcelでテーブルをフィルタリングするにはどうすればよいですか?

分類Dev

ネストされたオブジェクト配列のキーに基づいてオブジェクト配列をフィルタリングするにはどうすればよいですか?

分類Dev

キーに基づいてJSONをフィルタリングするにはどうすればよいですか?すべてのオブジェクトに対して1つのタイプのキーのリストしかありません

分類Dev

アプリスクリプトで「不明」の基準に基づいてフィルタリングすることにより、Googleドライブからファイルを取得するにはどうすればよいですか?

分類Dev

ブレードテンプレートのデータベースフィールドに基づいて選択したオプションを設定するにはどうすればよいですか?

分類Dev

テーブルのドロップダウン選択に基づいてテキストフィールドに「無効」属性を追加するにはどうすればよいですか?

分類Dev

オブジェクトの配列内のプロパティの最初の文字に基づいてオブジェクトの配列をフィルタリングするにはどうすればよいですか?

分類Dev

特定のオブジェクトプロパティの配列に基づいてオブジェクトの配列をフィルタリングするにはどうすればよいですか?

分類Dev

詳細テーブルエントリをマスターテーブルの列として選択するにはどうすればよいですか?

分類Dev

ユーザーがドロップダウンメニューから選択したパラメーターに基づいてJavaオブジェクトのリストをソートするにはどうすればよいですか?

分類Dev

ユーザーがドロップダウンメニューから選択したパラメーターに基づいてJavaオブジェクトのリストをソートするにはどうすればよいですか?

分類Dev

ドロップダウンリストに基づいてテーブルにデータを入力するにはどうすればよいですか?

分類Dev

Rのデータテーブル列を反復処理して、プロットでグラフ化するにはどうすればよいですか?

分類Dev

複数の列に基づいてパンダデータセットをフィルタリングするにはどうすればよいですか?

分類Dev

スクリプト-配列の長さ/サイズに基づいてフィルターを作成するにはどうすればよいですか?

分類Dev

データのプロパティ値に基づいて、Json.Netを使用して逆シリアル化するオブジェクトタイプを選択するにはどうすればよいですか?

分類Dev

反応ネイティブチャットアプリケーションでGraphQlサブスクリプションを使用して、GraphQlクエリからリアルタイムの更新を取得するにはどうすればよいですか?

分類Dev

複数のテーブルを含むExcelスプレッドシートからヘッダーに基づいてテーブルを選択するにはどうすればよいですか?

分類Dev

文字列に基づいてティブルのリストをフィルタリングし、特定の行ではなく、文字列でティブル全体を取得するにはどうすればよいですか?

分類Dev

時間に基づいてファイルのサブセットをフィルタリングするにはどうすればよいですか?

分類Dev

反応ブートストラップテーブル内にボタンを追加するにはどうすればよいですか?

分類Dev

テキストボックスに基づいて配列のテーブルを作成するにはどうすればよいですか?

分類Dev

Sparkの配列列からフィールドのサブセットを選択するにはどうすればよいですか?

分類Dev

オブジェクトの配列に格納されている2つの等しいフィールドに基づいて、結合中にマングースの集計をフィルタリングするにはどうすればよいですか?

分類Dev

反応ネイティブアプリのコンストラクターからnavigationOptionsのヘッダータイトルを変更するにはどうすればよいですか?

Related 関連記事

  1. 1

    reactのドロップダウン値に基づいてブートストラップテーブルをフィルタリングするにはどうすればよいですか?

  2. 2

    Rシャイニー内のリーフレットマップからの入力に基づいてデータテーブルをフィルタリングするにはどうすればよいですか?

  3. 3

    ブートストラップテーブルの列でフィルタリングするにはどうすればよいですか?

  4. 4

    MSExcel。入力範囲に基づいてピボットテーブルをフィルタリングするにはどうすればよいですか?

  5. 5

    値の列に基づいてExcelでテーブルをフィルタリングするにはどうすればよいですか?

  6. 6

    ネストされたオブジェクト配列のキーに基づいてオブジェクト配列をフィルタリングするにはどうすればよいですか?

  7. 7

    キーに基づいてJSONをフィルタリングするにはどうすればよいですか?すべてのオブジェクトに対して1つのタイプのキーのリストしかありません

  8. 8

    アプリスクリプトで「不明」の基準に基づいてフィルタリングすることにより、Googleドライブからファイルを取得するにはどうすればよいですか?

  9. 9

    ブレードテンプレートのデータベースフィールドに基づいて選択したオプションを設定するにはどうすればよいですか?

  10. 10

    テーブルのドロップダウン選択に基づいてテキストフィールドに「無効」属性を追加するにはどうすればよいですか?

  11. 11

    オブジェクトの配列内のプロパティの最初の文字に基づいてオブジェクトの配列をフィルタリングするにはどうすればよいですか?

  12. 12

    特定のオブジェクトプロパティの配列に基づいてオブジェクトの配列をフィルタリングするにはどうすればよいですか?

  13. 13

    詳細テーブルエントリをマスターテーブルの列として選択するにはどうすればよいですか?

  14. 14

    ユーザーがドロップダウンメニューから選択したパラメーターに基づいてJavaオブジェクトのリストをソートするにはどうすればよいですか?

  15. 15

    ユーザーがドロップダウンメニューから選択したパラメーターに基づいてJavaオブジェクトのリストをソートするにはどうすればよいですか?

  16. 16

    ドロップダウンリストに基づいてテーブルにデータを入力するにはどうすればよいですか?

  17. 17

    Rのデータテーブル列を反復処理して、プロットでグラフ化するにはどうすればよいですか?

  18. 18

    複数の列に基づいてパンダデータセットをフィルタリングするにはどうすればよいですか?

  19. 19

    スクリプト-配列の長さ/サイズに基づいてフィルターを作成するにはどうすればよいですか?

  20. 20

    データのプロパティ値に基づいて、Json.Netを使用して逆シリアル化するオブジェクトタイプを選択するにはどうすればよいですか?

  21. 21

    反応ネイティブチャットアプリケーションでGraphQlサブスクリプションを使用して、GraphQlクエリからリアルタイムの更新を取得するにはどうすればよいですか?

  22. 22

    複数のテーブルを含むExcelスプレッドシートからヘッダーに基づいてテーブルを選択するにはどうすればよいですか?

  23. 23

    文字列に基づいてティブルのリストをフィルタリングし、特定の行ではなく、文字列でティブル全体を取得するにはどうすればよいですか?

  24. 24

    時間に基づいてファイルのサブセットをフィルタリングするにはどうすればよいですか?

  25. 25

    反応ブートストラップテーブル内にボタンを追加するにはどうすればよいですか?

  26. 26

    テキストボックスに基づいて配列のテーブルを作成するにはどうすればよいですか?

  27. 27

    Sparkの配列列からフィールドのサブセットを選択するにはどうすればよいですか?

  28. 28

    オブジェクトの配列に格納されている2つの等しいフィールドに基づいて、結合中にマングースの集計をフィルタリングするにはどうすればよいですか?

  29. 29

    反応ネイティブアプリのコンストラクターからnavigationOptionsのヘッダータイトルを変更するにはどうすればよいですか?

ホットタグ

アーカイブ