Tabulator中tabEndNewRow新增行时getData()无返回值求助
解决Tabulator中
tabEndNewRow: true时rowAdded事件行数据为空的问题 问题原因
开启tabEndNewRow: true后,按Tab键触发新增行时,rowAdded事件的触发时机是新行刚被添加到表格DOM中,此时新行本身还未填充任何数据,因此调用row.getData()会返回空对象。如果你的预期是获取之前编辑行的数据,那是因为误解了rowAdded事件的触发对象——它针对的是新创建的空行,而非之前编辑的行。
解决方案
根据需求提供两种可行方案:
获取刚编辑完成的行数据:监听
cellEdited事件
当在Quantity栏输入值并按Tab键时,会触发当前单元格的cellEdited事件,此时可直接获取该行的完整数据:table.on("cellEdited", function(cell){ let row = cell.getRow(); console.log(row.getData()); // 输出当前编辑行的有效数据 });新增行时获取表格完整数据:在
rowAdded中调用表格的getData()
如果需要在新增行时获取整个表格的所有数据(包括之前编辑的行),可在rowAdded事件中调用表格实例的getData()方法:table.on("rowAdded", function(row){ console.log(table.getData()); // 输出表格全部数据,包含之前编辑的内容 // 若要获取新行的默认数据,可提前为列设置默认值 // 比如在列定义中添加: defaultValue: 0 });
补充说明
如果列没有设置默认值,新行本身就是空的,row.getData()返回空对象是正常现象。可以在列定义中通过defaultValue参数为列设置初始值,比如:
{ title: "Quantity", field: "quantity", defaultValue: 0 }
内容的提问来源于stack exchange,提问作者splemp
相关产品推荐
相关产品推荐

