2010-07-21 13 views

Répondre

6

Supposons que vous utilisez jQuery

var grid; 
$(function() { 
    // init options, load data 
    ... 

    var columns = []; 
    columns[0] = { 
    id: 'id', 
    name: '#', 
    field: 'id', // suppose you have an id column in your data model 
    formatter: function (r, c, id, def, datactx) { 
     return '<a href="#" onclick="RemoveClick(' + id + ',' + r + ')">X</a>'; } 
    } 
    // init other columns 
    ... 

    grid = new Slick.Grid($('#gridDiv'), data, columns, options); 
} 
function RemoveClick(databaseId, gridRow) { 
    // remove from serverside using databaseId 
    ... 
    // if removed from serverside, remove from grid using 
    grid.removeRow(gridRow); 
} 
-3

salut Je suis utilisé ce script pour supprimer la ligne de SlickGrid

fonction deletefila (numrow) {

alert("delete row"+numrow); 

    data.splice(numrow,1); 

    grid.removeAllRows(); 

    grid.render(); 

     //grid.removeRow(5); 

     //grid.updateRowCount(); 

     //and then invalidate and re-render the grid by calling grid.removeAllRows() followed by grid.render(). 

}

+0

Uncaught TypeError: Object # n'a pas de méthode 'removeAllRows' – Dryadwoods

16

Si vous utilisez un DataView, utilisez ce qui suit:

DataView.deleteItem(RowID);//RowID is the actual ID of the row and not the row number 
Grid.invalidate(); 
Grid.render(); 

Si vous ne connaissez que le numéro de ligne, vous pouvez obtenir theRowID en utilisant:

var item = DataView.getItem(RowNum);//RowNum is the number of the row 
var RowID = item.id 
5

C'est ainsi que je le fais (n'utilisant aucun fournisseur de données):

//assume that "grid" is your SlickGrid object and "row" is the row to be removed 
var data = grid.getData(); 
data.splice(row, 1); 
grid.setData(data); 
grid.render(); 

Je l'utilise dans un projet en direct et il fonctionne bien. Bien sûr, si vous souhaitez supprimer plusieurs lignes, quelques modifications doivent être apportées, ou si vous utilisez un fournisseur de données, vous voudrez peut-être supprimer uniquement la ligne du fournisseur de données, puis SlickGrid rafraîchira simplement les lignes.

Hope it helps :)

-2

oui bien sûr, je l'utilise de cette façon

var selrow = grid.getSelectedRows(); 
data.splice(selrow, 1); 
grid.invalidateAllRows(); 
grid.render(); 

Salutations

+0

"Uncaught TypeError: Obj ect # n'a pas de méthode 'removeAllRows' " – Dryadwoods

1
var rowsToDelete = grid.getSelectedRows().sort().reverse(); 
for (var i = 0; i < rowsToDelete.length; i++) { 
    data.splice(rowsToDelete[i], 1); 
} 
grid.invalidate(); 
grid.setSelectedRows([]); 
2
function deleteRows() { 
    var selectedIndexes = grid.getSelectedRows().sort().reverse(); 
    var result = confirm("Are you sure you want to delete " + grid.getSelectedRows().length + " row(s)?"); 
    if (result) { 

     $.each(selectedIndexes, function (index, value) { 
     var item = dataView.getItem(value); //RowNum is the number of the row 
     if (item) 
      dataView.deleteItem(item.id); //RowID is the actual ID of the row and not the row number 
     }); 

     grid.invalidate(); 
     grid.render(); 
    } 
    }