2013-07-04 7 views
7

Kullanarak satırları silemiyorum En son sürüme sahip satırları kaldıramıyorum. 0.9.9 sürümünü kullanıyorum.HandsOnTable

Bu benim yaptığım:

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)); 
} 

Handsontable delete multiple rows benzer bir soru vardı ama bu benim amacıma çözmez. Bu bağlantıdaki keman, sağlanan çözümle çalışmaz.

Herhangi bir yardım için teşekkür ederiz.

+0

Tablonuzun neye sahip olduğuna dair bir örnek verebilir misiniz? – Romoku

+0

Veri yok boş bir tablo – rizwaniqbal

+0

O zaman aslında hiçbir satırı kaldırmıyorsunuz. Ekstra satır ve sütunların görüntülenmesini istemiyorsanız, handsontable seçeneklerinde 'minSpareRows: 0' ve' minSpareCols: 0' ayarını yapın. – Romoku

cevap

1

, getSelected() döner şey yardımcı olur umarım ...

büyük bir problem olduğunu
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()]; 
    //} 
    } 

biraz işlev handsontable referanslar beri. Ancak, neyse ki afterSelectionEnd event'u kullanabiliriz.

afterSelectionEnd (r: Number, c: Number, r2: Number, c2: Number)
Geri arama (fare yukarı) seçilen bir ya da daha fazla hücre sonra geçti.

Parametreler:
r seçimi başlangıç ​​satır
c seçim başlangıcı sütun
r2 seçim son satır
c2 seçim son kolon

API göre,

alter ('remove_row', index: Number, amount: Number (Optional), source: String (Optional))

Verilen dizindeki satırları siler. Varsayılan tutar 1

alter('remove_row')'u kullanmak için, sadece endeksi sağlamanız gerekir. İşte


ben istenilen sonucu elde etmek için yapılan bir working demo olduğunu.

NOT:

nedeniyle bug bir nedeniyle, afterSelectionEnd event bazı mantığı eklemeniz gerekir.

JAVASCRIPT: Bu yardımcı olur ve başka bir şeye ihtiyacın olursa haber ver

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...'); 
    } 
}); 

Umut!

+0

Hey, ben de bunu çalışmak için var .... ayrıntılı cevap için teşekkürler – rizwaniqbal

+0

@rizwaniqbal emin şey! Başka bir şeye ihtiyacın olursa haberim olsun! – Dom

1

Boş bir son satırı silmek istediğinizi tahmin ediyorum?

minSpareRows değerini 0'dan (varsayılan) daha yükseğe ayarlamamış olduğunuzdan emin olun. MinSpareRows sıfırdan fazlaysa, ek satırı ('remove_row') kullanarak fazladan silemezsiniz.

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

Ödeme u boş geçen satırı siler del linke tıklayın düşünüldüğünde kömür örnek:

i boş son satırı simüle etmek bu verileri kullanılmıştır. Bu size haliyle şu anda

Working Example