简体   繁体   English

slickgrid - 如何遍历画布外的行?

[英]slickgrid - How to loop through rows which are outside canvas?

I am having some markers on map and same number of rows in slickgrid? 我在地图上有一些标记,在slickgrid中有相同的行数?

What I want is when a marker is clicked the id of marker is matched with all rows and corresponding row should get selected. 我想要的是当单击标记时,标记的id与所有行匹配,并且应该选择相应的行。

Here is my code: 这是我的代码:

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

It works fine only when the row which I want is present in the grid but the grid DOM contains only 8 rows at a time (The grid has 30 rows). 只有当我想要的行存在于网格中但网格DOM一次只包含8行(网格有30行)时,它才能正常工作。

How can I loop through all data? 如何遍历所有数据?

You shouldn't be modifying SlickGrid's DOM at all. 你根本不应该修改SlickGrid的DOM。 SlickGrid will overwrite any changes as it's only rendering the rows in view (with some buffer). SlickGrid将覆盖任何更改,因为它只渲染视图中的行(使用一些缓冲区)。 When you scroll past that buffer any changes you made to the DOM are lost. 当您滚动浏览该缓冲区时,您对DOM所做的任何更改都将丢失。

You have to change the row's data and allow SlickGrid to add the appropriate classes to the DOM when it's rendering. 您必须更改行的数据并允许SlickGrid在呈现时将相应的类添加到DOM。

Edit : 编辑

SlickGrid setup: 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;
  };
}

Then when you click on a marker: 然后当您单击标记时:

var item = dataView.getItemById(selectedMarker);
var row  = dataView.getRowById(selectedMarker);
item.isActive = true;
dataView.updateItem(item.id, item);
grid.scrollRowIntoView(row);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM