如何通过 Javascript 函数正确传递 table 数据
How to properly pass table data through Javascript function
我正在使用 Django 设置一个基本的 Web 应用程序。我有一个 Handsontable,它使用一个表单,允许用户更新 table,按“保存”按钮并将更改保存到 csv 文件。我的问题是我不知道如何正确传递数据。
我的方法是 afterChange 函数应该在更新 table 时将数据传递到 table_data_dump div 以便在 [=22] 中使用=] 代码按下保存按钮执行。
但是它似乎并没有这样做,而且我无法弄清楚数据变量的正确用法。我是 JS 的新手,所以很容易混淆。
下面是完整的 JS:
<script type="text/javascript">
$.ajaxSetup ({
// Disable caching of AJAX responses
cache: false
});
var data = [['', '', '', ''], ['', '', '', ''], ['', '', '', ''],
['', '', '', ''], ['', '', '', ''], ['', '', '', ''],
['', '', '', ''], ['', '', '', ''], ['', '', '', '']];
var dataArray = {};
dataArray['bnb'] = '/static/data/oim-oimom/lookup_bnb.csv'
dataArray['testsplit'] = '/static/data/oim-oimom/lookup_testsplit.csv'
dataArray['test two'] = '/static/data/oim-oimom/lookup_test-two.csv'
var afterChange = function() {
console.log(JSON.stringify(data));
document.getElementById('table_data_dump').innerHTML = JSON.stringify(data)
};
var createTable = function(data) {
var container = document.getElementById('lookup');
var hot = new Handsontable(container, {
data: data,
afterChange: afterChange,
minSpareRows: 1,
rowHeaders: true,
colHeaders: ['col1','col2','col3', 'Assignment'],
columns: [
{readOnly: true},
{readOnly: true},
{readOnly: true},
{}
],
colWidths: [335, 335, 335, 335]
})};
createTable(data);
var SelectBoxChange = function() {
var e = document.getElementById("split_name_select");
var split_select = e.options[e.selectedIndex].text;
$.get(dataArray[split_select], function(data) {
document.getElementById('lookup').innerHTML='';
data = $.csv.toArrays(data);
createTable(data);
});
};
</script>
我已经弄明白了,以防万一它对其他人有用...
我应该在这里使用 Handsontable 的 getData()
方法,但是由于我的变量范围,它给了我 hot.getData()
的未定义错误。我将这些更改为全局,然后可以访问数据。
除此之外,afterChange
需要在创建 table 后使用 updateSettings()
方法进行设置。这是为了允许定义容器,然后在分配之前在 afterChange
函数中引用它。
谢谢
我正在使用 Django 设置一个基本的 Web 应用程序。我有一个 Handsontable,它使用一个表单,允许用户更新 table,按“保存”按钮并将更改保存到 csv 文件。我的问题是我不知道如何正确传递数据。
我的方法是 afterChange 函数应该在更新 table 时将数据传递到 table_data_dump div 以便在 [=22] 中使用=] 代码按下保存按钮执行。
但是它似乎并没有这样做,而且我无法弄清楚数据变量的正确用法。我是 JS 的新手,所以很容易混淆。
下面是完整的 JS:
<script type="text/javascript">
$.ajaxSetup ({
// Disable caching of AJAX responses
cache: false
});
var data = [['', '', '', ''], ['', '', '', ''], ['', '', '', ''],
['', '', '', ''], ['', '', '', ''], ['', '', '', ''],
['', '', '', ''], ['', '', '', ''], ['', '', '', '']];
var dataArray = {};
dataArray['bnb'] = '/static/data/oim-oimom/lookup_bnb.csv'
dataArray['testsplit'] = '/static/data/oim-oimom/lookup_testsplit.csv'
dataArray['test two'] = '/static/data/oim-oimom/lookup_test-two.csv'
var afterChange = function() {
console.log(JSON.stringify(data));
document.getElementById('table_data_dump').innerHTML = JSON.stringify(data)
};
var createTable = function(data) {
var container = document.getElementById('lookup');
var hot = new Handsontable(container, {
data: data,
afterChange: afterChange,
minSpareRows: 1,
rowHeaders: true,
colHeaders: ['col1','col2','col3', 'Assignment'],
columns: [
{readOnly: true},
{readOnly: true},
{readOnly: true},
{}
],
colWidths: [335, 335, 335, 335]
})};
createTable(data);
var SelectBoxChange = function() {
var e = document.getElementById("split_name_select");
var split_select = e.options[e.selectedIndex].text;
$.get(dataArray[split_select], function(data) {
document.getElementById('lookup').innerHTML='';
data = $.csv.toArrays(data);
createTable(data);
});
};
</script>
我已经弄明白了,以防万一它对其他人有用...
我应该在这里使用 Handsontable 的 getData()
方法,但是由于我的变量范围,它给了我 hot.getData()
的未定义错误。我将这些更改为全局,然后可以访问数据。
除此之外,afterChange
需要在创建 table 后使用 updateSettings()
方法进行设置。这是为了允许定义容器,然后在分配之前在 afterChange
函数中引用它。
谢谢