Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

I'm using the latest SlickGrid, with dataView.

I subscribe to the onActiveCellChanged event to react to a user selecting a row, and get the cell contents of the first column with:

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

This works perfectly until I filter the table. Then args.row doesn't match the row in the data table.

How can I map the filtered row number (given in the event), to the actual row of the data that I want to read?

i.e. A filtered grid could yield one row of data, but could actually be row ten of the actual data table. I need to be able to read the data in the visible row selected.

like image 314
Dave Avatar asked Nov 19 '25 20:11

Dave


1 Answers

After numerous attempts, I finally managed to do this. For anyone else that comes looking, what I did was:

    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'];

This solution compensates for re-ordered columns as well as filtered rows.

like image 50
Dave Avatar answered Nov 21 '25 08:11

Dave



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!