Ваша проблема звучит как проблема на стороне сервера - сортировка работает только после того, как таблица была связана в том же запросе. В противном случае событие, связанное с сортировкой, не сможет найти ничего.
Конечно, если вы уже связали таблицу, она уже отсортирована, так что теперь вам нужно снова получить данные.
Этот тип проблемы является общей проблемой ужасной модели событий страницы .Net.
Самое простое исправление - убедиться, что ваша таблица восстанавливается при обратной передаче ajax после загрузки viewstate, но до запуска событий, затем снова получите данные после того, как событие сработало. Проблема в том, что тогда у тебя есть данные дважды.
Лучшее решение - избегать использования обработчиков событий .Net в любых динамических элементах страницы.
Эти типы проблем с моделью событий страницы .Net являются одной из причин, по которой так много интереса к MVC.