w obecnym brzmieniu, getSelected()
nic nie zwraca ...
getSelected: function() {
//https://github.com/warpech/jquery-handsontable/issues/44
//cjl if (selection.isSelected()) {
//return [priv.selStart.row(), priv.selStart.col(), priv.selEnd.row(), priv.selEnd.col()];
//}
}
który jest ogromny problem, ponieważ handsontable odniesień, które działają całkiem sporo. Jednak możemy na szczęście użyć afterSelectionEnd event.
afterSelectionEnd (r: Number, c: Number, r2: Number, c2: Number)
oddzwaniania zwolniony po jednej lub większej liczbie wybranych komórek (na mysz w górę).
Parametry:
r
rozpoczęcia selekcji wiersza
c
kolumnowej początkowy wybór
r2
końcowy wybór rzędu
c2
selekcji kolumny koniec
Według API,
alter ('remove_row', index: Number, amount: Number (Optional), source: String (Optional))
Usuń wiersz (y) z danego indeksu. Domyślna kwota to 1
Oznacza to, że aby korzystać z alter('remove_row')
, wystarczy podać indeks.
Oto working demo zrobiłem, aby uzyskać pożądany wynik.
UWAGA:
W wyniku bug, musimy dodać trochę logiki w afterSelectionEnd event
.
javascript:
var myData = [
["", "Kia", "Nissan", "Toyota", "Honda"],
["2008", 10, 11, 12, 13],
["2009", 20, 11, 14, 13],
["2010", 30, 15, 12, 13]
];
//declare row vars
var row1 = null,
row2 = null;
var $container = $("#exampleGrid");
$container.handsontable({
data: myData,
startRows: 5,
startCols: 5,
minSpareCols: 0,
minSpareRows: 0,
rowHeaders: true,
colHeaders: true,
contextMenu: true,
afterSelectionEnd: function(x1, y1, x2, y2){
//add this because of bug
if((x1 <= x2 && y1 < y2) || (x1 < x2 && y1 <= y2) || (x1 == x2 && y1 == y2)) {
row1 = x1;
if(x1 == 0)
row2 = parseInt(x2 + 1);
else
row2 = x2;
}
else if((x1 >= x2 && y1 > y2) || (x1 > x2 && y1 >= y2)) {
row1 = x2;
if(x2 == 0)
row2 = parseInt(x1 + 1);
else
row2 = x1;
}
else if(x1 < x2 && y1 > y2) {
row1 = x1;
row2 = x2;
}
else if(x1 > x2 && y1 < y2) {
row1 = x2;
row2 = x1;
}
}
});
//gets instance of handsontable
var instance = $container.handsontable('getInstance');
$('#delete').click(function(){
if(row1 != null){
if(row2 != null || row2 != row1){
instance.alter('remove_row', row1, row2);
}
else{
instance.alter('remove_row', row1);
}
row1 = null;
row2 = null;
}else{
alert('Please select a cell...');
}
});
Nadzieja to pomaga i daj mi znać, jeśli potrzebujesz czegoś innego!
Czy możesz podać przykład zawartości tabeli? – Romoku
Jego pusta tabela bez danych – rizwaniqbal
Wtedy faktycznie nie usuwasz żadnych wierszy. Ustaw opcje 'minSpareRows: 0' i' minSpareCols: 0' w opcjach do ręcznego wyświetlania, jeśli nie chcesz wyświetlać dodatkowych wierszy i kolumn. – Romoku