2012-09-27 12 views
5

(DataViewを使用して)インラインフィルタリングを使用しているスリックグリッドがあります。私はデータの各行に一意のIDを割り当てて、このID(行番号ではありません)をUI上の他の場所のdivを更新する関数に渡します。SlickGridフィルタリング後に行IDが変更される

フィルタリングしないとうまくいきます。しかし、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>'); 
    } 
}) 
+0

本当に...誰もこのことについては何も知りません?そんなことをするのはそんなに普通のことのように思われます。 – user1415445

答えて

14

あなたはすでに、あなたではなく、元のデータソース(data_msc)より、それdataView_msc)から行/データを取得しなければならないのDataViewを使用している場合。

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

私はあなたがクリックされたセルの値とその行のidプロパティの値とmscToUI()の内側に行う上で計画しているものはかなりよく分かりません。私は単に関数に行の全データオブジェクト(item)を通過し、データビューの検索方法を使用して他の操作を予備成形する賢いかもしれないと思う:

  • getIdxById(id) - アイテムのIDで、相対行インデックスを見つけます。 grid`
  • getItem(i) - 濾過グリッドの行インデックスでは、データを返す/アイテムの行
  • getItemById(id)前記 - アイテムのIDで、前記アイテムのデータ/アイテムを返す
  • getItemByIdx(i) - フィルタリングされていないグリッドの行インデックスを使用すると、データ用/アイテムを返した行
+0

私はこの回答が受け入れられるべきだと思います!おかげさまであなたの答えが大いに助けてくれました! – makim

関連する問題