Я получил это работает. (Своего рода)
В событии сортировки я сохранил выражение сортировки (имя столбца, по которому сортировался)
и сортировка по возрастанию или по убыванию.
Затем я создаю источник данных для gridview и databind, а после привязки данных использую команду gridview.sort для сортировки по значениям, сохраненным в viewstate.
Это прекрасно работает, только одна проблема.
При сортировке я переключал направление после нажатия на одну и ту же колонку более одного раза.
Теперь он думает, что я продолжаю нажимать на заголовок столбца, поэтому он продолжает реверсировать сортировку.
Но я временно сделал это только в одном направлении.
И теперь я играю с объектом отправителя в событии сортировки, думая, что, если бы я мог получить некоторую информацию о причинах события, я мог бы сказать ему, чтобы он переключал направление только на основе отправителя.
Спасибо:)