如何在 Handsontable 中使用钩子。我需要在粘贴前检查数据
How to use hooks in Handsontable. I need check data before paste
我需要在将数据插入 table 之前检查数据,如果不正确,请更改并插入。我正在尝试创建一个带有 beforeInsert 前缀的挂钩并在那里描述这个逻辑,但它不起作用。
我试过这段代码进行测试,但粘贴时没有任何变化
hot1.addHook('beforePaste', function(td1, row1, col1, prop1, value1, cellProperties1) {
if (prop1 === 'cost1') {
var cellMeta1 = this.getCellMeta(row, this.propToCol('cost2'));
cellMeta1.type = 'text';
cellMeta1.source = 'hello';
}
}
);
会不会是我调用这个钩子之前的问题?
hot1.addHook('beforeRenderer', function(td, row, col, prop, value, cellProperties) {
if (prop === 'warehouse') {
var cellMeta = this.getCellMeta(row, this.propToCol('xWarehouse'));
cellMeta.readOnly = (value != ' ' && value != '' && value != null) ? true : false;
}
}
);
如何检查更改后的值并将其插入 table?
例子:
在输入3 213处,插入3213,去掉空格
更新:
我也试过用这个:
if (prop === 'cost1' && value != '') {
var cellMeta = this.getCellMeta(row, this.propToCol('cost1'));
hot1.setDataAtCell(row,col,value);
}
});
但在这种情况下,我的 table 冻结了
我们可以使用 afterChange 钩子更改值。
var setter = false;
hot1.addHook('afterChange', function(changes, src) {
if (!setter) {
setter = true;
for(let obj of changes){
var currentRow = obj[0];
var currentValue = obj[3].replace(/\s+/g,'');
var currentCol = obj[1].replace(/\s+/g,'');
var colNumber = hot1.propToCol(currentCol);
hot1.setDataAtCell(currentRow, colNumber, currentValue);
}
} else {
setter = false;
}
});
HandsonTable会将changes的值和src本身进行代入,之后我们可以把插入的值拉出来改一下,然后再插入回去
我需要在将数据插入 table 之前检查数据,如果不正确,请更改并插入。我正在尝试创建一个带有 beforeInsert 前缀的挂钩并在那里描述这个逻辑,但它不起作用。
我试过这段代码进行测试,但粘贴时没有任何变化
hot1.addHook('beforePaste', function(td1, row1, col1, prop1, value1, cellProperties1) {
if (prop1 === 'cost1') {
var cellMeta1 = this.getCellMeta(row, this.propToCol('cost2'));
cellMeta1.type = 'text';
cellMeta1.source = 'hello';
}
}
);
会不会是我调用这个钩子之前的问题?
hot1.addHook('beforeRenderer', function(td, row, col, prop, value, cellProperties) {
if (prop === 'warehouse') {
var cellMeta = this.getCellMeta(row, this.propToCol('xWarehouse'));
cellMeta.readOnly = (value != ' ' && value != '' && value != null) ? true : false;
}
}
);
如何检查更改后的值并将其插入 table? 例子: 在输入3 213处,插入3213,去掉空格
更新:
我也试过用这个:
if (prop === 'cost1' && value != '') {
var cellMeta = this.getCellMeta(row, this.propToCol('cost1'));
hot1.setDataAtCell(row,col,value);
}
});
但在这种情况下,我的 table 冻结了
我们可以使用 afterChange 钩子更改值。
var setter = false;
hot1.addHook('afterChange', function(changes, src) {
if (!setter) {
setter = true;
for(let obj of changes){
var currentRow = obj[0];
var currentValue = obj[3].replace(/\s+/g,'');
var currentCol = obj[1].replace(/\s+/g,'');
var colNumber = hot1.propToCol(currentCol);
hot1.setDataAtCell(currentRow, colNumber, currentValue);
}
} else {
setter = false;
}
});
HandsonTable会将changes的值和src本身进行代入,之后我们可以把插入的值拉出来改一下,然后再插入回去