Ich habe ein gridView, dass ich (indirekt) mit Daten aus einer MSSQL-Datenbank befülle:
('daten' ist der Name des GridViews; die DataSource (inkl. Select-Command) wird im aspx-File definiert)
if (!IsPostBack)
{
datasource.ConnectionString = //Connectionstring
DataView view = new DataView();
view = datasource.Select(DataSourceSelectArguments.Empty) as DataView;
daten.DataSource = view;
daten.DataBind();
ViewState["dtbl"] = view.ToTable();
setTablePreferences();
}
Den ViewState rufe ich in der Sorting-Methode wieder auf:
protected void daten_Sorting(object sender, GridViewSortEventArgs e)
{
DataTable dataTable = ViewState["dtbl"] as DataTable;
if (dataTable != null)
{
DataView dataView = new DataView(dataTable);
if (e.SortDirection == SortDirection.Descending)
{
dataView.Sort = e.SortExpression + " ASC";
}
else
{
dataView.Sort = e.SortExpression + " DESC";
}
daten.DataSource = dataView;
daten.DataBind();
ViewState["dtbl"] = dataView.ToTable();
}
}
Das Problem ist nun: e.SortDirection ist immer 'Ascending'. Ich hatte gehofft, dass im ViewState die SortDirection korrekt übergeben wird, aber auch da ist sie immer 'Ascending', auch wenn sie in der dataview (die ich ja als DataTable in den ViewState speichere) 'Descending' ist.
Wie kann ich das Problem lösen?
(gegoogelt und im Forum gesucht hab ich schon, aber nichts gescheites gefunden)