2010-07-21 35 views

Trả lời

6

Giả sử bạn đang sử dụng 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 Tôi đã sử dụng tập lệnh này để xóa hàng của SlickGrid

chức năng 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

lỗi chưa gặp: Object # không có phương pháp 'removeAllRows' – Dryadwoods

16

Nếu bạn đang sử dụng một DataView, sử dụng như sau:

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

Nếu bạn chỉ biết số lượng hàng, bạn có thể nhận được theRowID sử dụng:

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

Đây là cách tôi làm điều đó (không sử dụng bất kỳ nhà cung cấp dữ liệu nào):

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

Tôi sử dụng điều này trong một dự án trực tiếp và nó hoạt động tốt. Tất nhiên, nếu bạn muốn loại bỏ nhiều hàng thì cần phải thực hiện một vài chỉnh sửa, hoặc nếu bạn sử dụng nhà cung cấp dữ liệu thì có thể bạn muốn xóa hàng chỉ từ nhà cung cấp dữ liệu và sau đó có SlickGrid chỉ làm mới các hàng.

Hy vọng nó sẽ giúp :)

-2

vâng tất nhiên, tôi sử dụng nó theo cách này

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

Greetings

+0

"Loại lỗi không hợp lệ: Obj ect # không có phương thức '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(); 
    } 
    } 
Các vấn đề liên quan