javascript - 过滤后 SlickGrid 行 ID 发生变化

标签 javascript filter slickgrid

我有一个带内嵌过滤功能的 slickgrid(使用 DataView)。我为每行数据分配了唯一 ID,并将此 ID(不是行号)传递给一个函数,该函数更新 UI 上其他地方的 div。

如果我不过滤,这会很好用。但是,如果我在传递 ID 之前过滤该列,它会更改 ID 以反射(reflect)行号。它甚至会将字符串 ID 更改为行号。

这看起来很奇怪。知道发生了什么事吗???

grid_msc.onClick.subscribe(function(e, args) {
    var cell = grid_msc.getCellFromEvent(e);
    var row = cell.row;             // get row #
    var row_ID = data_msc[row].id;  // get the row ID, not row #
    var msc = data_msc[args.row][grid_msc.getColumns()[args.cell].field];

    alert("Row#:"+row+", RowID:"+row_ID+", Value:"+msc);
    mscToUI(msc, row_ID);
});


// Add the selected item to the UI
    function mscToUI(addC, cellNum) {
        alert(addC+", "+cellNum);
        $('#selectedMsc').append('<a href="javascript:removemsc('+cellNum+')" id="'+cellNum+'" class="rSel"><img src="images/remove.png" align="texttop" border="0" style="padding-right:4px;">'+addC+'<br /></a>');
    }
})

最佳答案

如果您已经在使用 DataView,那么您应该从 (dataView_msc) 获取行/数据,而不是原始数据源 (data_msc )。

grid_msc.onClick.subscribe(function(e, args) {
  var cell   = grid_msc.getCellFromEvent(e);  // get the cell
  var row    = cell.row;  // get the row's index (this value will change on filter/sort)
  var item   = dataView_msc.getItem(row);  // get the row's item (see: object, data)
  var msc    = item[grid_msc.getColumns()[cell.cell].field];  // get the value of the cell

  alert("Row Index:"+row+", RowID:"+item.id+", Cell Value:"+msc);
  console.log(item);
  mscToUI(msc, item.id);
});

我不太确定您打算在 mscToUI() 中使用单击的单元格的值及其行的 id 属性的值做什么。我认为简单地将行的整个数据对象 (item) 传递给函数并使用 DataView 的查找方法执行任何其他操作可能更明智:

  • getIdxById(id) - 使用项目的 id,找到网格中的相对行索引`
  • getItem(i) - 使用过滤网格的行索引,返回所述行的数据/项目
  • getItemById(id) - 使用项目的 id,返回所述项目的数据/项目
  • getItemByIdx(i) - 使用未过滤网格的行索引,返回所述行的数据/项目

关于javascript - 过滤后 SlickGrid 行 ID 发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12626326/

相关文章:

javascript - 如何在不离开页面的情况下更改浏览器中显示的 URL

javascript - AngularJS ng-view、ng-click 和 routerProvider 不能一起工作

javascript - 执行 onblur 时如何处理 "catch"和卸载事件

javascript - 如何在 Slick Grid 上使用分组和聚合

javascript - 禁用多选?

javascript - .then() 方法返回的 promise 对象的用途是什么?

python , Pandas : Filter rows of data frame based on function

filter - 如何避免在 Windows 文件管理器根中显示存储提供程序同步根

google-apps-script - Google Sheets 动态过滤可编辑数据

jquery - Slickgrid 分组展开/折叠奇怪的行为