我有一个制表器表,我在其中通过以下方式添加新行(在顶部):
$("#add-row").click(function(){
$.ajax({
url: "row-edit.php", // add row into DB
data: "typ=add",
type: "POST",
error: function(XMLHttpRequest, textStatus, error){
alert("AJAX error: " + textStatus + "; " + error);
}
})
table.addRow({});
});
我现在想检索此新行的索引以更新单元格。
cellEdited:function(cell){
//this is called whenever a cell's value is edited.
var id = cell.getRow().getIndex(); // get indeox of updated row
...
}
但是,添加此行后,索引未定义。所以我认为我需要重新加载数据,但是我不确定什么是最好的方法。
我在table.addRow({});
之前添加了这一行:
table.replaceData("refresh.php");
这通常可以正常工作,我会得到行的索引。但是新添加的行立即从屏幕上消失了-我发现这是因为我使用的验证器现在在新行的某些空白单元格上失败。 如果删除验证器,添加的行将保持可见状态,并且可以成功更新。
还有另一种方法来获取新行的索引以允许更新吗? 我的计划B现在将在添加的行中添加一些占位符值,以使验证程序不会失败。但是我希望有一个新的空行,其中没有任何数据。
答案 0 :(得分:0)
从sql连接加载数据时,我遇到了同样的问题。当我单击它或更改其值时,未定义插入行的索引。
我还没有尝试过使用Ajax,但是在node.js后端使用SqlConnection
什么对我有用:
当我调用我的方法以插入新行时,首先触发sql数据库以创建一个新的空条目...可以说用空值或“”插入对象的所有值,但主键是自动递增的。
然后重新加载制表器表以直接从sql获取新行(我认为重新加载ajax应该与refresh.php相同)
现在,当您使用制表符的回调cellEdited:function(cell){}
时,可以使用row.getIndex();
返回索引(在我的情况下,getIndex是我的sql的行主键)
还要记住,制表符具有以下漂亮的方法:table.replaceData("/data.php") //load data from data/php via ajax request
您可以找到有关此特定问题的更多信息here
我希望能对您有所帮助!
答案 1 :(得分:0)
addRow 函数返回一个用新行Row Component解析的承诺。您可以在该行上调用任何您喜欢的函数来对其进行操作,在这种情况下, getPosition 函数将返回其在表中的位置:
table.addRow({})
.then((row) => {
var position = row.getPosition(); //get position of row
});