【发布时间】:2011-03-19 05:14:01
【问题描述】:
如何从按钮的 javascript 函数中删除一行 例如
【问题讨论】:
如何从按钮的 javascript 函数中删除一行 例如
【问题讨论】:
如果您使用的是 DataView,请使用以下内容:
DataView.deleteItem(RowID);//RowID is the actual ID of the row and not the row number
Grid.invalidate();
Grid.render();
如果您只知道行号,则可以使用以下方法获取 theRowID:
var item = DataView.getItem(RowNum);//RowNum is the number of the row
var RowID = item.id
【讨论】:
假设你正在使用 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);
}
【讨论】:
我就是这样做的(虽然不使用任何数据提供者):
//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();
我在一个实时项目中使用它,它运行良好。当然,如果您想删除多行,则应该进行一些调整,或者如果您使用数据提供程序,那么您可能只想从数据提供程序中删除该行,然后让 SlickGrid 刷新这些行。
希望对你有帮助:)
【讨论】:
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();
}
}
【讨论】:
var rowsToDelete = grid.getSelectedRows().sort().reverse();
for (var i = 0; i < rowsToDelete.length; i++) {
data.splice(rowsToDelete[i], 1);
}
grid.invalidate();
grid.setSelectedRows([]);
【讨论】:
当然,我就是这样用的
var selrow = grid.getSelectedRows ();
data.splice(selrow, 1);
grid.invalidateAllRows();
grid.render ();
问候
【讨论】:
嗨 我用这个脚本来删除 SlickGrid 行
函数 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().
}
【讨论】: