Вы можете применить сортировку к исходному запросу, используя переменные ViewState String для хранения сортировки , поля и сортировки direction :
Убедитесь, что переменные ViewState установлены по умолчанию:
ViewState["sortDir"] = "DESC";
ViewState["sortField"] = "tbl_user.UserID";
Затем измените строку запроса:
string userQuery =
"Select tbl_User.UserID, tbl_User.FirstName " +
"from tbl_user " +
"ORDER BY " + (String)ViewState["sortField"] + " " + (String)ViewState["sortDir"];
Включить в OnSorting:
protected void gridView_Sorting(object sender, GridViewSortEventArgs e)
{
// Set new sort direction and sort field
if ((String)ViewState["sortDir"] == "DESC"){ViewState["sortDir"] = "ASC";}
else { ViewState["sortDir"] = "DESC"; }
ViewState["sortField"] = e.SortExpression;
// Rebind
...
}
Таким образом, ваши исходные данные предварительно отсортированы, и вам не нужно беспокоиться об использовании myView.Sort
или о каких-либо конфликтах подкачки / сортировки.