gpt4 book ai didi

javascript - 如何使 React 数据网格表格单元格可编辑并专注于单击按钮而不执行双击操作

转载 作者:行者123 更新时间:2023-11-29 11:03:06 28 4
gpt4 key购买 nike

我正在使用 React 数据网格列出我的数据。

我想在单击按钮时添加一个新行,因此第一列(不一定首先可以是任何列)应该是可编辑的并专注于创建。

我知道 React 数据网格在双击时具有可编辑的单元格功能。但我希望在没有任何点击的情况下创建行。如果有任何方法可以在用户按下回车后禁用编辑,那就太好了。

生成列表的代码:

import React, { Component } from 'react';
import FileMenuFormatter from './filemenuformatter';
import NameFormatter from './nameformatter';
import ListView from '../../components/listview/listview';
import { getRow } from '../../helpers/fileviewer/fileutils';

const columns = [
{
key: 'name',
name: 'Name',
formatter: NameFormatter,
resizable: true,
sortable: true
}, {
key: 'created',
name: 'Created On',
resizable: true,
sortable: true
}, {
key: 'lastmodified',
name: 'Last Modified',
resizable: true,
sortable: true
}, {
key: 'filesize',
name: 'File Size',
resizable: true,
sortable: true
},
{
key: 'menu',
name: '',
width: 35,
formatter: FileMenuFormatter,
draggable: false
}
];
/**
*
*
* @class myComp
* @extends {Component}
*/
class myComp extends Component {
getList() {
let rows = [];
for (let index in this.props.dList) {
if (typeof index !== 'undefined') {
let dir = this.props.dList[index];
rows.push(getRow("dir", dir))
}
}
for (let index in this.props.fList) {
if (typeof index !== 'undefined') {
let file = this.props.fList[index];
rows.push(getRow("file", file))
}
}

var newRow = this.props.newRow;

if(Object.keys(newRow).length !== 0) {
rows.push(getRow("dir", newRow[0]));

}

return rows
}
getRow(rowId) {
return this.getList()[rowId];
}

render() {
let rowListData = this.getRowList();
return (
<div>
<ListView
columns={columns}
rows={rowListData}
minHeight={this.props.minHeight} />
</div>
);
}
}
export default myComp;

有人知道如何实现吗?

最佳答案

我已经解决了这个问题。解决方法在这里。

所以点击一个按钮我调用了我的 showActive() 函数,它负责使列(在我的例子中是第 1 列)可编辑,就像 React 数据网格一样。

1st 使列可编辑,ReactDataGrid 将“可编辑”作为输入函数。 allowEdit 是检查此列是否可编辑。对我来说,我想让单元格仅在创建新行时才可编辑。

创建新对象以作为新行插入表中。像这样 -

 let newRow = [
{
created: milliseconds,
absPath: this.props.dirSelectedPath,
modified: milliseconds,
size: 0,
filename: folderName,
type: "FILE_DIR",
allowEdit: true
}
];

然后下面是可编辑单元格的列配置。

const columns = [
{
key: 'name',
name: 'Name',
resizable: true,
sortable: true,
filterable: true,
editable: function (rowData) {
return rowData.allowEdit ? true : false;
}
}
];

现在您必须编写一个函数来显示突出显示和事件的单元格。为此,我调用了与 React 数据网格调用相同的函数。

获取网格句柄。

<ReactDataGrid showActive={this.showActive.bind(this)} rowsCount={this.getSize()} ref={node => this.grid = node} {...this.props } />

showActive() {
let length = this.getSize(); // get the length of the grid i.e number of rows
let obj = { idx: 0, rowIdx: length };
let promise = new Promise(function (resolve, reject) {
if (this.grid) {
resolve("this worked!");
}
}.bind(this));

promise.then(function () {
this.grid.onSelect(obj);
this.grid.setActive('Enter');
}.bind(this), function () {
});
}

希望有所帮助。

关于javascript - 如何使 React 数据网格表格单元格可编辑并专注于单击按钮而不执行双击操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43671601/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com