<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的状态变量中
if (type == 'PackagesList')
{
let packageslist = UserStore._getpackagelist() || {};
this.setState({ packageslist }, ()=>
{
this.setState({
packagesfortable: this.state.packageslist.packings.map(el => el.packageName)
});
});
} 如何在下拉列表中动态填充packagesfortable状态变量数据。
发布于 2018-10-27 15:15:54
HotTable的一个实例有一个updateSettings方法,可以通过选项调用该方法来更新表设置。
如果在HotTable React.Element中设置了引用,则可以通过访问ref.current.HotInstance来检索底层实例。
下面的示例从json占位符API获取用户,并将列的源设置更新为从API返回的用户名数组。
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'));https://stackoverflow.com/questions/53018887
复制相似问题