slickgrid - Как перебирать строки, которые находятся за пределами холста?

У меня есть несколько маркеров на карте и такое же количество строк в slickgrid?

Я хочу, чтобы при нажатии на маркер идентификатор маркера сопоставляется со всеми строками, и соответствующая строка должна быть выбрана.

Вот мой код:

var $canvas = $(grid.getCanvasNode());
var $allRows = $canvas.find('.slick-row');

    $($allRows).each(function() {
        if ($(this).rowID == selectedMarker) {
            $(this).addClass("active-row"); 
            grid.scrollRowIntoView($(this).index());
        }
    });

Он работает нормально только тогда, когда строка, которую я хочу, присутствует в сетке, но DOM сетки содержит только 8 строк за раз (сетка имеет 30 строк).

Как я могу просмотреть все данные?


person Premshankar Tiwari    schedule 17.04.2013    source источник


Ответы (1)


Вам вообще не следует изменять DOM SlickGrid. SlickGrid перезапишет любые изменения, поскольку он отображает только строки в представлении (с некоторым буфером). Когда вы прокручиваете этот буфер, любые изменения, внесенные вами в DOM, теряются.

Вы должны изменить данные строки и разрешить SlickGrid добавлять соответствующие классы в DOM во время рендеринга.

Изменить:

Настройка SlickGrid:

dataView.getItemMetadata = metadata(dataView.getItemMetadata);

function metadata(metadataProvider) {
  return function(row) {
    var item = this.getItem(row),
        ret = metadataProvider(row);

    if (item && item.isActive) {
      ret = ret || {};
      ret.cssClasses = (ret.cssClasses || '') + ' active-row';
    }

    return ret;
  };
}

Затем, когда вы нажимаете на маркер:

var item = dataView.getItemById(selectedMarker);
var row  = dataView.getRowById(selectedMarker);
item.isActive = true;
dataView.updateItem(item.id, item);
grid.scrollRowIntoView(row);
person idbehold    schedule 17.04.2013
comment
Я не хочу изменять DOM. Я просто хочу выполнить итерацию по всему представлению данных (а не только по строкам, отображаемым в представлении) - person Premshankar Tiwari; 18.04.2013
comment
да .. спасибо, но как получить элемент строки таким образом ... как в моем коде ... - person Premshankar Tiwari; 18.04.2013