簡體   English   中英

過濾后SlickGrid行ID更改

[英]SlickGrid Row ID changes after filtering

我有一個內聯過濾(使用DataView)的slickgrid。 我為數據的每一行分配了唯一的ID,並將該ID(而不是行號)傳遞給一個函數,該函數在UI的其他位置更新div。

如果我不過濾,效果很好。 但是,如果我在傳遞ID之前對列進行了過濾,則會更改ID以反映行號。 甚至會將字符串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_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的lookup方法執行任何其他操作可能會更聰明:

  • getIdxById(id) -使用項目的ID,在網格中找到相對行索引
  • getItem(i) -使用過濾后的網格的行索引,返回所述行的數據/項目
  • getItemById(id) -使用商品的ID,返回該商品的數據/商品
  • getItemByIdx(i) -使用未過 getItemByIdx(i) 的行索引,返回所述行的數據/項目

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM