React-data-grid-使用全局变量更改单元格值

凯尔·克雷格

我正在尝试在我的react-data-grid中创建某些功能。

我有一个名为subStart的列,并且我想使用一个下拉列表,以便用户可以将单元格的值设置为状态变量(this.state.timeTotalSec)的值。因此,如果用户单击“开始时间”单元格中的“使用全局时间”选项,它将用this.state.timeTotalSec的值替换该单元格的值。我到底该怎么做?

我有下拉功能的工作。但是,如何更改单元格值呢?

const rows = [
  { id: 1, subStart: "00:00.000", subEnd: "00:00.000" , subText: 'Text1'},
  { id: 2, subStart: "00:00.000", subEnd: "00:00.000" , subText: 'Text2'},
  { id: 3, subStart: "00:00.000", subEnd: "00:00.000" , subText: 'Text3'}
];

const columns = [
  {
    key: "id",
    name: "ID"
  },
  {
    key: "subStart",
    name: "Start Time",
    editable: true
  },
  {
    key: "subEnd",
    name: "End Time",
    editable: true
  },
  {
    key: "subText",
    name: "Text",
    editable: true
  }
].map(c => ({ ...c, ...defaultColumnProperties }));

const subStartActions = [
  {
    icon: <span className="glyphicon glyphicon-remove" />,
    callback: () => {
      alert("Deleting");
    }
  },
  {
    icon: "glyphicon glyphicon-link",
    actions: [
      {
        text: "Use Global Time",
        callback: () => {
          // TODO
          // **** TRYING TO MAKE THIS WORK ****
        }
      }
    ]
  }
];

function getCellActions(column, row) {
  const cellActions = {
    subStart: subStartActions
  };
  return row.id % 2 === 0 ? cellActions[column.key] : null;
}

const ROW_COUNT = 50;

class App extends React.Component {
  constructor (props) {
    super(props)
    this.state = {
      playing: false,
      duration: 0,
      timeMilli: 0,
      timeSec: 0,
      timeMin: 0,
      timeTotalSec: 0,
      rows
    }
  }

  onDuration = (duration) => {
    this.setState({ duration })
  }
  onProgress = (progress) => {
    if (this.state.duration == 0) {
      return
    }

    const timeTotalSec = progress.played * this.state.duration

    if (timeTotalSec !== this.state.timeTotalSec) {
      const timeMin = Math.floor(timeTotalSec / 60)
      const timeSec = Math.floor(timeTotalSec - (timeMin)*60)
      const timeMilli = (timeTotalSec - timeSec - timeMin*60).toFixed(3)

      this.setState({ timeTotalSec })
      this.setState({ timeMin })
      this.setState({ timeSec })
      this.setState({ timeMilli })
    }
  } 

  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 };
    });
  };


  render () {
    const { data } = this;


    return (
        <div className='player-wrapper'>
        <ReactPlayer
          url='https://www.youtube.com/watch?v=lhlZkqEag7E'
          className='react-player'
          playing={this.state.playing}
          onPlay={() => this.setState({ playing: true })}
          onPause={() => this.setState({ playing: false })}
          controls='True'
          onDuration={this.onDuration}
          onProgress={this.onProgress}
        />
        Video is currently: {this.state.playing ? 'playing' : 'paused'}
        <br />
        Duration: {Math.round(this.state.duration).toString() + ' seconds'}
        <br />
        Elapsed: {this.state.timeMin + 'min ' + this.state.timeSec + 'sec ' + 
                  this.state.timeMilli + 'ms'}

        <br />
        <button onClick={() => this.setState({ playing: true })}>Play</button>
        <button onClick={() => this.setState({ playing: false })}>Pause</button>

        <ButtonToolbar>
          <Button variant="primary" onClick={() => this.setState(this.state.playing ? false : true)}>Play/Pause</Button>
        </ButtonToolbar>

      <ReactDataGrid
        columns={columns}
        rowGetter={i => this.state.rows[i]}
        rowsCount={ROW_COUNT}
        // minHeight={500}
        getCellActions={getCellActions}
        onGridRowsUpdated={this.onGridRowsUpdated}
        enableCellSelect={true}
      />

    </div>
    )
  }
}
亚历克斯

ReactDataGrid只会渲染传递给它的数据,如果要更改单元格的值,则应更新数据源中的行或所使用的状态。 rows

 this.state = {
      playing: false,
      duration: 0,
      timeMilli: 0,
      timeSec: 0,
      timeMin: 0,
      timeTotalSec: 10,
      rows // your datasourse
    };

我想,id是您的数据Key.Add updateRowDate到处理您状态更改的操作。

actions: [
      {
        text: "Use Global Time",
        callback: () => {
          // TODO
          // **** TRYING TO MAKE THIS WORK ****
          updateRowDate(row.id);
        }
      }
    ]

这是updateRowDate在App组件中

  updateRowDate = rowId => {
    this.setState(prv => ({
      rows: prv.rows.map(q => {
        if (q.id === rowId) return { ...q, subStart: this.state.timeTotalSec };
        return q;
      })
    }));

最后,您需要传递updateRowDategetCellActions

<ReactDataGrid
          columns={columns}
          rowGetter={i => this.state.rows[i]}
          rowsCount={ROW_COUNT}
          // minHeight={500}
          getCellActions={(column, row) =>
            getCellActions(column, row, this.updateRowDate)
          }
          onGridRowsUpdated={this.onGridRowsUpdated}
          enableCellSelect={true}
        />

这是包含固定版本临时沙箱

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在React中使用Material-UI覆盖react-data-grid样式

来自分类Dev

React Data Grid 外部数据更新

来自分类Dev

Ag-grid 单元格编辑器不显示整个 React 组件

来自分类Dev

动态添加行到 React-data-grid

来自分类Dev

在ng-grid中更改值时更改单元格的颜色

来自分类Dev

AG-Grid React,麻烦自定义单元格渲染器在数据更改时进行更新。功能组件的行为与类组件不同

来自分类Dev

Ui-Grid - 更改背景颜色单元格相同的值

来自分类Dev

AG-Grid单元格模板值更改

来自分类Dev

在 Ag Grid 中动态更改或设置单元格类别

来自分类Dev

Jboss Data Grid中Key值对的分布

来自分类Dev

基于单元格值的UI Grid RowTemplate颜色

来自分类Dev

使用Kendo编辑器中的值更新Kendo Grid选定的单元格值

来自分类Dev

使用 grid() 将 LabelFrame 中的单元格居中

来自分类Dev

React:如何根据React表中的单元格值更改表单元格背景

来自分类Dev

在 Grid react-native-easy-grid 中添加 onPress 功能时布局已更改

来自分类Dev

如何在react-data-grid中的行选择中禁用行的复选框

来自分类Dev

使用Angular 8中的param函数动态更改ag-grid的单元格渲染器

来自分类Dev

在单元格编辑触发的异步方法完成之前和之后,如何更改Ag Grid中的单元格样式?

来自分类Dev

如何使用react-grid-layout创建动态拖放布局

来自分类Dev

如何使用CSS Grid重新排序React组件?

来自分类Dev

如何使用React JS在Grid JS中显示行索引

来自分类Dev

如何使用React JS在Grid JS中显示行索引

来自分类Dev

Angular-ui-grid-如何根据单元格的值有条件地显示单元格模板

来自分类Dev

Angular-ui-grid-如何根据单元格的值有条件地显示单元格模板

来自分类Dev

如何在ag-grid单元格字段值中显示枚举值?

来自分类Dev

如何更改已在ag-Grid中编辑的单元格的样式?

来自分类Dev

AngularJS:根据条件ng-grid更改单元格的颜色

来自分类Dev

尝试在 Grid 单元格中的 CellEditor 更改时触发事件

来自分类Dev

React Native中的全局变量/常量

Related 相关文章

  1. 1

    如何在React中使用Material-UI覆盖react-data-grid样式

  2. 2

    React Data Grid 外部数据更新

  3. 3

    Ag-grid 单元格编辑器不显示整个 React 组件

  4. 4

    动态添加行到 React-data-grid

  5. 5

    在ng-grid中更改值时更改单元格的颜色

  6. 6

    AG-Grid React,麻烦自定义单元格渲染器在数据更改时进行更新。功能组件的行为与类组件不同

  7. 7

    Ui-Grid - 更改背景颜色单元格相同的值

  8. 8

    AG-Grid单元格模板值更改

  9. 9

    在 Ag Grid 中动态更改或设置单元格类别

  10. 10

    Jboss Data Grid中Key值对的分布

  11. 11

    基于单元格值的UI Grid RowTemplate颜色

  12. 12

    使用Kendo编辑器中的值更新Kendo Grid选定的单元格值

  13. 13

    使用 grid() 将 LabelFrame 中的单元格居中

  14. 14

    React:如何根据React表中的单元格值更改表单元格背景

  15. 15

    在 Grid react-native-easy-grid 中添加 onPress 功能时布局已更改

  16. 16

    如何在react-data-grid中的行选择中禁用行的复选框

  17. 17

    使用Angular 8中的param函数动态更改ag-grid的单元格渲染器

  18. 18

    在单元格编辑触发的异步方法完成之前和之后,如何更改Ag Grid中的单元格样式?

  19. 19

    如何使用react-grid-layout创建动态拖放布局

  20. 20

    如何使用CSS Grid重新排序React组件?

  21. 21

    如何使用React JS在Grid JS中显示行索引

  22. 22

    如何使用React JS在Grid JS中显示行索引

  23. 23

    Angular-ui-grid-如何根据单元格的值有条件地显示单元格模板

  24. 24

    Angular-ui-grid-如何根据单元格的值有条件地显示单元格模板

  25. 25

    如何在ag-grid单元格字段值中显示枚举值?

  26. 26

    如何更改已在ag-Grid中编辑的单元格的样式?

  27. 27

    AngularJS:根据条件ng-grid更改单元格的颜色

  28. 28

    尝试在 Grid 单元格中的 CellEditor 更改时触发事件

  29. 29

    React Native中的全局变量/常量

热门标签

归档