Установите для свойства gridView.AllowSorting значение true. Отсюда сетка должна позволять вам автоматически сортировать данные при обратной передаче, если вы используете объект, который реализует IBindingList. Однако, поскольку это, скорее всего, не так, вам следует воспользоваться советом TheTXI выше и самостоятельно обработать событие сортировки. Либо подключите событие GridView.Sorting в коде, например так:
gridView.Sorting += new GridViewSortEventHandler(gridView_Sorting);
Обработайте сортировку внутри метода gridView_Sorting, который должен выглядеть следующим образом:
private void gridView_Sorting(object sender, GridViewSortEventArgs e)
{
//Sorting logic here
}
Кроме того, вы можете связать событие на самой странице, используя OnSort = "gridView_Sorting", прикрепленный к элементу управления.
Помните, поскольку вы устанавливаете gridView.EnableSortingAndPagingCallbacks в false, это не будет немедленно запущено, когда пользователь пытается выполнить сортировку, вместо этого он будет ожидать обратной передачи на сервер.
Надеюсь, это поможет!
РЕДАКТИРОВАТЬ:
Поскольку ObjectDataSource, по-видимому, является предпочтительным посредником, вот краткое объяснение подключения, которое также подходит для сортировки. Используйте следующую информацию на своей странице (полный пример можно найти здесь в MSDN, внизу):
<asp:GridView ID="TestGridView" runat="server" DataSourceID="ObjectDataSourceTest"
AllowSorting="True">
</asp:GridView>
<asp:ObjectDataSource ID="ObjectDataSourceTest" runat="server"
SelectMethod="SelectMethod"
TypeName="Samples.AspNet.CS.SortingData"
SortParameterName="sortExpression">
</asp:ObjectDataSource>
Вместо того, чтобы фактически использовать событие gridView.Sorting, вы будете перепрыгивать на ObjectDataSource, чтобы позаботиться о сортировке. Как только сортировка запущена, она должна вызвать метод, найденный в SelectMethod в вашем коде. Затем внутри SelectMethod вы будете обрабатывать восстановление вашего объекта GridView, которое будет выглядеть следующим образом:
public void SelectMethod(string sortExpression)
{
//Rebuild gridView table if necessary, same method used in
//on a postback, and retrieve data from the database. Once
//completed sort the data with:
gridView.Sort(sortExpression, SortDirection.(Ascending or Descending))
}