2013-07-04 9 views
7

Nie można usunąć wierszy z najnowszą wersją. Używam wersji 0.9.9.Nie można usunąć wierszy za pomocą narzędzia HandsOnTable

To co mam zrobić:

var $container = $("#add-table"); 
$container.handsontable(options); 

var handsontable = $container.data('handsontable'); 
var data = handsontable.getData(); 
if(data.length > 1 && handsontable.isEmptyRow(data.length-1)) { 
    handsontable.alter('remove_row', parseInt(data.length-1)); 
} 

Było podobne pytanie na Handsontable delete multiple rows ale to nie rozwiąże mój cel. Skrzypienie tego łącza nie działa z dostarczonym rozwiązaniem.

Każda pomoc zostanie doceniona.

+0

Czy możesz podać przykład zawartości tabeli? – Romoku

+0

Jego pusta tabela bez danych – rizwaniqbal

+0

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

Odpowiedz

1

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!

+0

Hej, mam to również do roboty .... dzięki za szczegółową odpowiedź – rizwaniqbal

+0

@rizwaniqbal pewna rzecz! daj mi znać, jeśli potrzebujesz czegoś jeszcze! – Dom

1

Zgaduję, że chcesz usunąć pusty ostatni wiersz?

Upewnij się, że nie ustawiłeś minSpareRows na wartość większą niż 0 (domyślnie). Jeśli parametr minSpareRows jest większy od zera, nie można usunąć dodatkowego wiersza za pomocą polecenia alter ("remove_row").

użyłem tych danych do symulacji pusty ostatni wiersz:

var myData = [ 
    ["", "Kia", "Nissan", "Toyota", "Honda"], 
    ["2008", 10, 11, 12, 13], 
    ["2009", 20, 11, 14, 13], 
    ["2010", 30, 15, 12, 13], 
    ["",,,] 
]; 

kasę przykładzie .Przy u kliknij del linku usuwa pusty ostatni wiersz. Nadzieję, że to pomaga

Working Example

Powiązane problemy