react-bootstrap-table:如何使用数据库生成的值处理关键字段?
react-bootstrap-table: How to handle key fields with database generated values?
我正在使用 react-bootstrap-table 编写一个 CRUD 应用程序来编辑存储在数据库 table 中的记录。主键是数据库生成的(一个 int
字段,在将记录插入数据库时获得递增的值)。此字段的 TableHeaderColumn
定义为 isKey={true}
。
我无法让插入对话框处理此问题。隐藏插入列时(hiddenOnInsert
),对话框报校验错误"id can't be empty value."
我搜索了一种在打开插入对话框之前调用函数的方法,以便能够为创建的行的键列设置一个虚拟值,但没有成功。
如何将插入对话框与数据库生成的键列一起使用?
自己找到答案:设置为 onAddRow
属性 的函数仅在通过插入行对话框添加新行之前调用。我用它来向键字段写入一个虚拟值,如 0 或 ""。我还通过在 TableHeaderColumn
中设置 hiddenOnInsert
来隐藏用于插入的关键字段。插入后(在设置为 afterInsertRow
的函数中),我通过 REST 将新实体添加到数据库中。 REST 方法 returns 新键值。我将此值设置为插入实体的键字段,以避免 bootstrap table 在下次插入新实体时抱怨现有键值。
我知道你说你已经找到了解决办法,但是,@enkara,其他人可能会遇到同样的问题,比如我自己。
我通过在 'onAfterInsertRow' 函数中获取回调时用 'row.pk = newPk' 更新行解决了这个问题:
onAfterInsertRow(row) {
fetch(...).then(response => {
if (response.ok ) {
response = response.json();
response.then((newPk) => {
row.pk = newPk
})
return response;
}
return response.json()
}).then(...).catch(...)
}
我正在使用 react-bootstrap-table 编写一个 CRUD 应用程序来编辑存储在数据库 table 中的记录。主键是数据库生成的(一个 int
字段,在将记录插入数据库时获得递增的值)。此字段的 TableHeaderColumn
定义为 isKey={true}
。
我无法让插入对话框处理此问题。隐藏插入列时(hiddenOnInsert
),对话框报校验错误"id can't be empty value."
我搜索了一种在打开插入对话框之前调用函数的方法,以便能够为创建的行的键列设置一个虚拟值,但没有成功。
如何将插入对话框与数据库生成的键列一起使用?
自己找到答案:设置为 onAddRow
属性 的函数仅在通过插入行对话框添加新行之前调用。我用它来向键字段写入一个虚拟值,如 0 或 ""。我还通过在 TableHeaderColumn
中设置 hiddenOnInsert
来隐藏用于插入的关键字段。插入后(在设置为 afterInsertRow
的函数中),我通过 REST 将新实体添加到数据库中。 REST 方法 returns 新键值。我将此值设置为插入实体的键字段,以避免 bootstrap table 在下次插入新实体时抱怨现有键值。
我知道你说你已经找到了解决办法,但是,@enkara,其他人可能会遇到同样的问题,比如我自己。
我通过在 'onAfterInsertRow' 函数中获取回调时用 'row.pk = newPk' 更新行解决了这个问题:
onAfterInsertRow(row) {
fetch(...).then(response => {
if (response.ok ) {
response = response.json();
response.then((newPk) => {
row.pk = newPk
})
return response;
}
return response.json()
}).then(...).catch(...)
}