Полагаю, вы могли бы использовать переменную сеанса для хранения направления сортировки. Поэтому, когда вы загружаете GridView, вы запрашиваете переменную сеанса, чтобы правильно ее отсортировать.
Должно быть что-то похожее на это:
private string getSortDirectionString()
{
if (Session["sortDirection"] == null)
{
Session["sortDirection"] = "ASC";
}
else
{
if (Session["sortDirection"].ToString() == "ASC")
{
Session["sortDirection"] = "DESC";
return Session["sortDirection"].ToString();
}
if (Session["sortDirection"].ToString() == "DESC")
{
Session["sortDirection"] = "ASC";
return Session["sortDirection"].ToString();
}
}
return Session["sortDirection"].ToString();
}
И вот как вы должны отсортировать ваш GridView:
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
listBind(); //procedure to populate your GridView
DataSet dsSortTable = GridView1.DataSource as DataSet;
DataTable dtSortTable = dsSortTable.Tables[0];
if (dtSortTable != null)
{
DataView dvSortedView = new DataView(dtSortTable);
dvSortedView.Sort = e.SortExpression + " " + getSortDirectionString();
Session["sortExpression"] = e.SortExpression;
GridView1.DataSource = dvSortedView;
GridView1.DataBind();
}
}
Таким образом, вы всегда будете хранить выражение sortExpression в переменной сеанса и можете использовать его во всем приложении.
Надеюсь, это поможет!