了解正在更新的列
Posted
技术标签:
【中文标题】了解正在更新的列【英文标题】:Knowing which column is being updated 【发布时间】:2012-08-05 02:04:17 【问题描述】:我正在尝试让我知道哪一列正在更新,但未能找到合适的解决方案。我知道他们正在使用 textarea 来获取输入,然后将值放入表中,但我就是不知道如何找出正在更新的列。
任何帮助将不胜感激。
谢谢
【问题讨论】:
【参考方案1】:这个方法会告诉你选择了哪一行/哪一列:
$('#example1grid').handsontable('getSelected')
这将返回与当前编辑的单元格相同的坐标,除非选择了多个单元格(但即使此时当前编辑的单元格始终位于选定的单元格内)。
我正在考虑创建一个新方法getCurrent
或回调onBeginEditing
来返回当前编辑的单元格。哪个更适合你?我认为回调会更好。
【讨论】:
我一直在寻找更像onFinishEditing的东西,因为该表包含数据集,并且每一列都需要被视为绝望的数据集。我正在寻找,我认为您的 finishEditing 功能可用于此目的。如果这样,我可以调用最后需要列号的函数,并传入 priv.selStart.col 和 priv.selEnd.col。第一个参数将给出最左侧的已编辑列,第二个参数将给出最右侧的已编辑列。我相信这可以处理所有更改表格的情况。 其实,刚刚意识到这并不总是有效。如果您有其他方法可以做到这一点,请告诉我。 那么onChange
回调不适合你吗?它获取一个数组数组作为参数。里面的数组有结构[row, col, oldVal, newVal]
你能详细描述一下你的情况吗?
onChange 的问题在于它不会触发所有更改。例如,如果我选择一个/多个单元格并使用退格键删除其中的数据,则不会调用 onChange。我想要的是,每当数据数组(使用 getData 检索)发生变化时,我想知道哪一列数据发生了变化,并且能够调用将使用该信息的函数。
所以我再次下载了 .js 文件,getSelected 方法现在似乎可以解决问题了。我一定是在修改代码时搞砸了。我仍然必须研究如何在每次更改时触发我的函数(包括在将值粘贴/剪切到表中/从表中删除之后)。非常感谢您的帮助!【参考方案2】:
onChange: function (data)
for (i in data)
if(data[i][2] != data[i][3])
var column = $('#dataTableLoc td:nth-child(' + (data[i][1] + 1) + ')')[0].innerText;
这显然远非优雅。它将与 button.html 中的“removeRow”示例等任何扩展名冲突,但显然可以进行相应调整。当从 SQL 表中提取数据并尝试使用查询进行更新时,这是必需的。
【讨论】:
以上是关于了解正在更新的列的主要内容,如果未能解决你的问题,请参考以下文章