lowcode-engine icon indicating copy to clipboard operation
lowcode-engine copied to clipboard

手动调用table.editRow,数据行无法进入编辑态

Open huzz5991 opened this issue 1 year ago • 1 comments

详细描述 bug

数据表格上有一个顶部操作【创建】,点击【创建】按钮后,预期在表格的第一行插入一个空行并进入编辑态。【创建】按钮绑定的的方法:

export function onActionClickAddBizField() {
  const resp = this.state.srBizFieldGetPage; // 表格数据(带pageSize的)
  const data = resp.data; // 表格中的行数据
  let newRow = {  // 新表格的数据主键是“id”字段,因此id值设置为9999999,避免与其他已有字段重复。
    id: 9999999,
  }
  data.unshift(newRow);
  console.log(JSON.stringify(data));
  // 设置数据
  this.setState({
    srBizFieldGetPage: {
      ...resp,
      data: data
    }
  });
  // 编辑态切换
  this.$('tableBizField').tableRef.editRow(newRow);
}

以上代码:插入空行是可以的,但是无法进入编辑态。

问题在于:如果将id指定为2(表格中存在id为2的数据),点击【创建】按钮后,id为2的那行数据变成了编辑态,且无新增的空行,如下所示: image


如何复现 bug?

参见问题的详细描述。


请提供如下信息

image

huzz5991 avatar Jan 29 '24 16:01 huzz5991

很奇怪的现象是,我点击2次【新增】,可以将第一行变成编辑态: image 我以为是this.$('tableBizField').tableRef.editRow(newRow);调用了2次导致的,于是乎,我改造代码如下:

export function onActionClickAddBizField() {
  const resp = this.state.srBizFieldGet;
  const data = resp.data;
  let newRow = {
    id: 999999,
    name: "xx",
  }
  data.unshift(newRow);
  

  // 设置数据
  this.setState({
    srBizFieldGetPage: {
      ...resp,
      data: data
    }
  });
  // 编辑态切换
  this.$('tableBizField').tableRef.editRow(newRow);
  this.$('tableBizField').tableRef.editRow(newRow);  // 多加一行
}

但好像不管用,有大佬能解答一下么。我发现editRow返回的是一个Promise,跟这个有关系么?(我后端程序员,前端不太熟悉)

huzz5991 avatar Jan 31 '24 15:01 huzz5991