Używasz jakiegoś frameworka (Symphony, Zend)? Widok jest renderowany na serwerze czy przeglądarce (js) ?
Bardzo ogólna odpowiedź, niezależnie od technologii: każdej z kolumn możesz przyporządkować własność `order: int` (order >= 0). Jeżeli `order == 0` kolumna jest niewidoczna, dla pozostałych wartości sortujesz kolumny i wyświetlasz.