I’m having good experiences with flop and its phoenix addendum flop_phoenix. It has first-class support for filtering, paginating and sorting. The phoenix package has a function component for displaying a table with these features.
There is this thread here.
Keep in mind that pagination and such often involves updating the url, which is a bit of a hassle (at least if you need deep-linking capabilities). Flop helps with that too.