我已經創建了一個自定義函數,該函數根據以下Handsontable鏈接中的說明在afterChange單元事件上執行。Handsontable - afterChangeEvent如何檢測整行何時被刪除或添加
https://docs.handsontable.com/0.15.0-beta3/Hooks.html
而且我可以根據被更改精每個單元執行操作。根據以下代碼。
var hot = new Handsontable(container, {
data: data(),
minSpareRows: 1,
rowHeaders: true,
colHeaders: ['some array of headers']
afterChange: function (changes, source) {
onChangeHandler(this, changes, source);
}
});
var onChangeHandler = function (hot_instance, changes, source) {
var changesLength;
var changePayloadtoServer = [];
if (changes != null) {
changesLength = changes.length;
} else {
changesLength = 0;
}
for (var i = 0; i < changesLength; i++) {
var row = changes[i][0],
col = changes[i][1],
oldVal = changes[i][2],
newVal = changes[i][3],
var trigger = false
// How to I determine that a whole row has been deleted/added here?
// trigger = some check that a whole row has been deleted/added.
if (trigger == true) {
// Perform action on row deletion
// i.e. CASCADE DELETE query on database
// Perform action on row addition
// i.e. INSERT INTO query on database
} else {
// Perform normal on cell change
// i.e. UPDATE query on database
}
}
}
但是,我無法弄清楚如何確定整個行已被刪除或添加的變化。鑑於此afterChange事件中提供的更改數據的格式如下:
[
{changedRowNumber, chnagedColumnName, oldCellValue, newCellValue}
, {changedRowNumber, chnagedColumnName, oldCellValue, newCellValue}
, {changedRowNumber, chnagedColumnName, oldCellValue, newCellValue}
, {changedRowNumber, chnagedColumnName, oldCellValue, newCellValue}
, ... etc.
]
我已經創建了一個示例小提琴。請參閱以下鏈接。
https://jsfiddle.net/JoshAdams/go898kq6/
有誰知道什麼時候一整排被添加或刪除我如何檢測?
感謝您的迴應。這有點回答我的問題。當您從上下文菜單中選擇「刪除行」和「插入行」功能時觸發兩個事件。但是,我還希望在「刪除特定行內的所有數據」(即某人突出顯示該行然後在其鍵盤上點擊DELETE)以及「當前沒有數據存在於特定行中並且新值是第一次輸入「(即有空行,然後有人將數值1輸入第一列)。是否有可能實現這一目標? – Josh
是的,用afterChange事件,如果你使用getData(row,row,col,col)(這個函數需要4個參數,因爲你可以用它得到整個表的範圍),你只需檢查每個值是否爲「 「的排列(發生變化的地方)。你想讓我用一個例子來編輯我的答案嗎?如果有幫助,我可以提供一個。 (雖然可能不是一個完整的:)) – fab
聽起來像一個計劃,你可以提供一個例子,雖然建議? :) – Josh