尝试:我想将Handsontable上的用户更改保存到数据库中。我认为我可以做的一种方法是使用隐藏的html表单,其中表单输入被引用到Handsontable中的特定单元格。
问题:我无法在.change函数中引用Handsontable中的特定单元格。
我在下面尝试的内容:尝试将用户所做的任何更改添加到单元格行(2)第(2)行,并将html表单id row2col2formInput更改为该值。
<script>
//fetch handsontable input for row 2 colum 2 and change corresponding hidden form input
$("#example").handsontable.(data[2][2]).change(function() {
$("#row2col2formInput").val($(this).val());
});
$(document).ready(function () {
var
data = [
['', 'Kia', 'Nissan', 'Toyota', 'Honda'],
['2008', 10, 11, 12, 13],
['2009', 20, 11, 14, 13],
['2010', 30, 15, 12, 13]
],
container = document.getElementById('example'),
hot;
hot = new Handsontable(container, {
data: data,
minSpareRows: 1,
colHeaders: true,
contextMenu: true
});
});
</script>
答案 0 :(得分:1)
首先,你说你引用单元格的行是错误的。并且你无法通过你所做的方式来引用一个单元格。不管你怎么说都不应该。
这是实现这项任务的另一种方式,顺便说一下,我们大多数人都使用HOT做的事情。
我不知道你的数据库结构,所以很难说,所以让我们说你正在使用SQL,并且每一行都是某个表上的物理行。你的数据库。现在,正如您所知,SQL中的每一行都应该有一个唯一的主自动增量键,您可以使用它来引用行,当您开始在HOT中的行中进行混洗时,这会派上用场。
现在让我们假设你有一个简单的JS和你所描述的HOT实例。 data
对象是向HOT实例提供数据的对象,但更重要的是,它是一个高度变异的对象。当用户对单元格进行更改时,此对象会发生变异。
这意味着您可以在某个地方添加Submit
按钮,以便在此时抓取对象并将其发送到您的数据库。这是经常使用的一种方法。这是唯一的SQL id派上用场的地方。您的data
对象可能会将此ID附加到现有行并将其设为隐藏列(无需向用户显示此信息)。
如果用户创建了一个新行,那么你可以附加一个负递减的整数(表示数据库中的&#34; new&#34;行),当用户提交时,你只需遍历{{ 1}}对象并对具有正ID的行执行UPDATE,对具有负IDS的行执行INSERT。
关于它。另一个选择是,您可以使用data
事件自动将每次更改保存到数据库中。你的功能会说像
afterChange
希望这有帮助!