如何在 onActiveCellChanged 事件中从过滤的光滑网格中获取正确的行 ID

How to get the correct row id, in a onActiveCellChanged event, from a filtered Slickgrid

本文关键字:获取 网格 ID 事件 onActiveCellChanged 过滤      更新时间:2023-09-26

我正在使用最新的SlickGrid和dataView。

我订阅了 onActiveCellChanged 事件以响应用户选择一行,并通过以下方式获取第一列的单元格内容:

grid.onActiveCellChanged.subscribe(function(e, args)
{
    var cell = args.cell;
    var row = args.row;
    vat cell_contents = data[row][grid.getColumns()[0].field]; 

在我过滤表格之前,这非常有效。然后 args.row 与数据表中的行不匹配。

如何将筛选的行号(在事件中给出)映射到要读取的数据的实际行?

即,过滤后的网格可以产生一行数据,但实际上可能是实际数据表的第十行。我需要能够读取所选可见行中的数据。

经过无数次尝试,我终于设法做到了这一点。对于其他来找的人,我所做的是:

    grid.onActiveCellChanged.subscribe(function(e, args)
    {
        var cell = args.cell;
        var row = args.row;
        var row_data = dataView.getItem(row);  // Read from dataView not the grid data
        var cell_contents = row_data['id'];

此解决方案补偿重新排序的列以及筛选的行。