首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在react handsontable中映射列类型"dropdown“源中的数据?

如何在react handsontable中映射列类型"dropdown“源中的数据?
EN

Stack Overflow用户
提问于 2018-10-27 13:07:02
回答 1查看 479关注 0票数 0
代码语言:javascript
复制
<HotTable root="hot" ref="hot" settings={this.state.settings} width="100%" strechH="all"/>

this.state = {
    settings: {
        colHeaders:['Packages'],
        data: [{packages:""}],
        columns: [{ data:"packages", type:'dropdown', source:["Pallet", "Box"] }],
        minSpareRows: 0,
        contextMenu: true,
        rowHeaders:true, 
        manualColumnResize: true,
        columnSorting: true, 
        manualRowResize: true, 
        manualRowMove: true,   
        manualColumnMove: true,
    }
}

在列中,当我使用manuall source时,数据出现在下拉列表中,就像附加的截图一样。

但是,何时需要填充数据取决于响应。我将响应数据存储在另一个名为packagesfortable的状态变量中

代码语言:javascript
复制
if (type == 'PackagesList')
{
    let packageslist = UserStore._getpackagelist() || {};
    this.setState({ packageslist }, ()=>
    {
        this.setState({
            packagesfortable: this.state.packageslist.packings.map(el => el.packageName)
        });
    });
}   

如何在下拉列表中动态填充packagesfortable状态变量数据。

EN

回答 1

Stack Overflow用户

发布于 2018-10-27 15:15:54

HotTable的一个实例有一个updateSettings方法,可以通过选项调用该方法来更新表设置。

如果在HotTable React.Element中设置了引用,则可以通过访问ref.current.HotInstance来检索底层实例。

下面的示例从json占位符API获取用户,并将列的源设置更新为从API返回的用户名数组。

代码语言:javascript
复制
import React, { Component } from 'react';
import { render } from 'react-dom';

import 'handsontable-pro/dist/handsontable.full.css';
import { HotTable } from '@handsontable/react';

const COLUMN_DEFAULT_OPTIONS = {data: "packages", type: 'dropdown'}

class App extends Component {
  constructor() {
    super();
    this.hotTableComponent = React.createRef();

    this.settings = {
        colHeaders: ['Packages'],
        data: [{ packages: "" }],
        columns: [{ ...COLUMN_DEFAULT_OPTIONS, source: ["Pallet", "Box"] }],
        // ...other settings continue here
     }
  }

  componentDidMount() {
    fetch("https://jsonplaceholder.typicode.com/users", {
      headers: {
        'Accept': 'application/json',
      },
    })
    .then(response => response.json())
    .then(json => {
      const usernames = json.map(({username}) => username);
      this.hotTableComponent.current.hotInstance.updateSettings(
        {"columns": [{ ...COLUMN_DEFAULT_OPTIONS, source: usernames}]}
      )
    })

  }

  render() {
    return (
      <div id="hot-app">
        <HotTable
          ref={this.hotTableComponent}
          settings={this.settings}
          width="600"
          stretchH="all" />
      </div>
    );

  }
}

render(<App />, document.getElementById('root'));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53018887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档