我在地图上有一些标记,在slickgrid中有相同的行数?

我想要的是当单击标记时,标记的id与所有行匹配,并且应该选择相应的行。

这是我的代码:

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行)时,它才能正常工作。

如何遍历所有数据?

===============>>#1 票数:2

你根本不应该修改SlickGrid的DOM。 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);

  ask by Premshankar Tiwari translate from so

未解决问题?本站智能推荐: