我正在使用react-bootstrap-table编写一个CRUD应用程序来编辑存储在数据库表中的记录。主键是数据库生成的(int
字段,在数据库中插入记录时获得递增的值)。此字段的TableHeaderColumn
定义为isKey={true}
。
我无法使用插入对话框来处理此问题。隐藏插入列(hiddenOnInsert
)时,对话框会报告验证错误“id不能为空值。”
我在打开插入对话框之前搜索了一种调用函数的方法,以便能够将虚拟值设置为创建的行的键列,但没有运气。
如何将插入对话框与数据库生成的键列一起使用?
答案 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(...)
}