Skip to content

Grouping on column + using scrollRowToTop or scrollRowToView #229

@larotech

Description

@larotech

Hello,

When grouping is enabled for a column one cannot use scrollRowToTop or scrollRowToView simply with the row index as it is not accounting for the added height introduced by groups. For example, if I have a grid with row height set to 22 pixels and it has 1000 rows of data and in those rows there is 100 groups and I want to scroll to record 500, scrollRowToTop is doing 500 * 22px = height of div to scroll to.

Now since I have groups and lets say 50 groups come before record index 500 then it really should be (500 (record index) * 22px )+ (50 (number of groups before) * 22px) = actual height of div to scroll to.

Basically what i'm saying is it appears slidGrid does not support scrollRowToTop or scrollRowToView when using groups as the correct row never comes into view.

I've come up with this hack code to try to overcome this limitation but it only seems to work accurately if the grid is sorted in ascending order by the id field.

        var test = dataView.getItemByIdx(index);
        var groups = dataView.getGroups();

        var groupIdx = -1;
        for (var i = 0; i < groups.length; i++) {
            for (var r = 0; r < groups[i].rows.length; r++) {
                if (groups[i].rows[r].object_Id === test.object_Id) {
                    groupIdx = i;
                    break;
                }
            }
            if (groupIdx !== -1) {
                break;
            }
        }
        var newIndex = groupIdx !== -1 ? groupIdx + index : index;
        recordsGrid.scrollRowToTop(newIndex, false);
    };

I'm using the (2.3.16) build of SlickGrid

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions