react-bootstrap-table:如何使用数据库生成的值处理关键字段?

时间:2017-05-18 19:28:03

标签: react-bootstrap-table

我正在使用react-bootstrap-table编写一个CRUD应用程序来编辑存储在数据库表中的记录。主键是数据库生成的(int字段,在数据库中插入记录时获得递增的值)。此字段的TableHeaderColumn定义为isKey={true}

我无法使用插入对话框来处理此问题。隐藏插入列(hiddenOnInsert)时,对话框会报告验证错误“id不能为空值。”

我在打开插入对话框之前搜索了一种调用函数的方法,以便能够将虚拟值设置为创建的行的键列,但没有运气。

如何将插入对话框与数据库生成的键列一起使用?

2 个答案:

答案 0 :(得分:4)

自己找到答案:只有在通过插入行对话框添加新行之前,才会调用设置为onAddRow属性的函数。我用它来写一个虚拟值,如0或“”到关键字段。我还通过在hiddenOnInsert中设置TableHeaderColumn来隐藏要插入的关键字段。插入(在函数集中为afterInsertRow)后,我通过REST将新实体添加到数据库中。 REST方法返回新的键值。我将此值设置为插入实体的键字段,以避免引导表在下次插入新实体时抱怨现有键值。

答案 1 :(得分:0)

我知道你说你已经找到了你的修复但是,正如@enkara,其他人可能会像我一样遇到同样的问题。

我通过使用' row.pk = newPk'更新行来解决它。在'onAfterInsertRow'中获取回调功能:

onAfterInsertRow(row) {

    fetch(...).then(response => {
        if (response.ok ) {

            response = response.json();
            response.then((newPk) => {

                row.pk = newPk
            })

            return response;
        }

        return response.json()
    }).then(...).catch(...)
}