Подсветка строки slickgrid при нажатии

Юмор меня здесь. Кажется, что другие сетки, такие как ExtJ, делают это из коробки, но я не могу найти никакого решения, чтобы сетка оставалась выделенной после того, как пользователь щелкнул ее. Мое временное решение — это просто быстрое правило css для выделения строки при наведении курсора мыши.

Неужели нет вариантов просто установить это? Похоже, мне придется пройти через модель rowSelection и настроить ее так, чтобы за раз можно было выбрать только одну строку, верно?


person jdivock    schedule 21.12.2011    source источник


Ответы (2)


Помимо вашего негативного тона, я не вижу ничего плохого в использовании предоставленного Slick.RowSeletionModel и установке для multiSelect в параметрах сетки значения false.

person Tin    schedule 25.12.2011
comment
Есть ли документация по этой модели RowSelectionModel? Я видел упоминание об этом, но я даже не могу найти его пример! - person dallin; 22.09.2012
comment
Я только что понял, что автор недавно (или, по крайней мере, я надеюсь, или я был слеп до этого) добавил пример с выбором строки. Любой, кто надеется сделать это (и это определенно лучший и самый простой способ), ознакомьтесь с этим примером: Выбор и изменение порядка строк. - person dallin; 22.09.2012

Вы можете сделать что-то вроде этого (демонстрация JSFiddle здесь):

/////////////////////////////////////////////////////////////////////
// Augment grid object with a method to highlight the currently active row
//
mygrid.highlightActiveRow = function () {
  var currentCell;
  var $canvas = $(this.getCanvasNode());

  currentCell = this.getActiveCell();

  $canvas.find(".slick-row").removeClass("active");
  if (currentCell) {
    $canvas.find(".slick-row[row=" + currentCell.row + "]").addClass("active");
  }
};

mygrid.onActiveCellChanged.subscribe(function () {
  this.highlightActiveRow();
});

Это помечает текущую строку классом active, который можно стилизовать по мере необходимости:

/* Currently selected row */    
#mygrid .slick-row.active
{    
  background: #ff0000;
}

/* Currently selected cell */
#mygrid .slick-cell.active
{
  background: #00ff00;
}

Могут быть лучшие способы сделать это, но это сработало для меня.

person njr101    schedule 22.12.2011