2010-07-21 10 views

Respuesta

6

Suponga que está utilizando 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

hi estoy acostumbrado este script para la fila de eliminación de SlickGrid

función 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

TypeError no detectada: Objeto # tiene ningún método 'removeAllRows' – Dryadwoods

16

Si estás utilizando un DataView, utilice la siguiente:

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

Si sólo conoce el número de fila, se puede obtener theRowID usando:

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

Así es como lo hago (sin usar ningún proveedor de datos):

//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(); 

Utilizo esto en un proyecto en vivo y funciona bien. Por supuesto, si quiere eliminar varias filas, entonces debe hacer algunos ajustes, o si usa un proveedor de datos, entonces tal vez quiera eliminar la fila solo del proveedor de datos y luego hacer que SlickGrid simplemente actualice las filas.

espero que ayude :)

-2

sí, por supuesto, yo uso esta manera

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

Saludos

+0

"UnEught TypeError: Obj ect # no tiene el método '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(); 
    } 
    } 
Cuestiones relacionadas