в Slickgrid, как я могу удалить строку из функции JavaScript - PullRequest
5 голосов
/ 22 июля 2010

как я могу удалить строку из функции JavaScript из кнопки, например

Ответы [ 7 ]

16 голосов
/ 24 января 2011

Если вы используете 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
6 голосов
/ 14 октября 2010

Предположим, вы используете 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);
}
5 голосов
/ 23 мая 2011

Вот как я это делаю (но без использования какого-либо поставщика данных):

//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 просто обновит строки. 1004 *

Надеюсь, это поможет:)

4 голосов
/ 16 декабря 2014
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();
    }
  }
1 голос
/ 22 октября 2014
var rowsToDelete = grid.getSelectedRows().sort().reverse();
for (var i = 0; i < rowsToDelete.length; i++) {
    data.splice(rowsToDelete[i], 1);
}
grid.invalidate();
grid.setSelectedRows([]);
0 голосов
/ 24 мая 2011

да, конечно, я использую это таким образом

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

Привет

0 голосов
/ 18 октября 2010

привет, я использовал этот скрипт для удаления строки из 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(). 

}

...