0

My every row has detailed view associated with it. I want to switch between details view and row view when user double click on row. The constrain for me is I am not sure where I should defined the flag. As per my requirements the flag should be associate with every row.

I have finish almost everything except that flag thing. code example

import React from "react";
import ReactDOM from "react-dom";
import ReactDataGrid, { Row } from "react-data-grid";
import "./styles.css";

const columns = [
  { key: "id", name: "ID", editable: true },
  { key: "title", name: "Title", editable: true },
  { key: "complete", name: "Complete", editable: true }
];

const rows = [
  { id: 0, title: "Task 1", complete: 20 },
  { id: 1, title: "Task 2", complete: 40 },
  { id: 2, title: "Task 3", complete: 60 }
];

class Example extends React.Component {
  state = { rows };

  onGridRowsUpdated = ({ fromRow, toRow, updated }) => {
    this.setState(state => {
      const rows = state.rows.slice();
      for (let i = fromRow; i <= toRow; i++) {
        rows[i] = { ...rows[i], ...updated };
      }
      return { rows };
    });
  };

  rowRenderer = props => {
    const { row } = props;
    if (row.expand) {
      return <div>my Custom view {row.title}</div>;
    } else {
      return <Row {...props} />;
    }
  };

  switchDetailedView = rowNumber => {
    console.log("rowNumber", rowNumber);
  };
  render() {
    return (
      <ReactDataGrid
        columns={columns}
        rowGetter={i => this.state.rows[i]}
        rowsCount={3}
        onGridRowsUpdated={this.onGridRowsUpdated}
        rowRenderer={this.rowRenderer}
        enableCellAutoFocus={false}
        onRowDoubleClick={this.switchDetailedView}
      />
    );
  }
}

const rootElement = document.getElementById("root");
ReactDOM.render(<Example />, rootElement);
Jitender
  • 7,593
  • 30
  • 104
  • 210
  • You will need to put the expanded flag into the state. You can either do that by adding state to `rowRenderer` (if ReactDataGrid will accept a component as rowRenderer property), or you can add to the data in the state for each row – Mikkel Jan 02 '19 at 02:39
  • @Mikkel: yeah just did that and work fine. – Jitender Jan 02 '19 at 02:40

0 Answers0