Wie sortiere ich Spalten in einer ASP.NET-GridView, wenn ich eine benutzerdefinierte DataSource verwende?

Ich kann mit meinem GridView nicht erreichen, dass ein Benutzer eine Datenspalte sortieren kann, wenn ich eine benutzerdefinierte SqlDataSource verwende.

Ich habe eine GridView, in der der Code in der ASP-Referenz im HTML-Code minimal ist:

<asp:GridView id="grid" runat="server" AutoGenerateColumns="False" AllowSorting="True">
</asp:GridView>

Im Code-Behind füge ich eine dynamisch erstellte SqlDataSource hinzu (die darin enthaltenen Spalten sind nicht immer gleich, sodass die SQL, mit der sie erstellt wurden, zur Laufzeit erstellt wird). Zum Beispiel:

Ich habe die Säulen aufgebaut ...

BoundField column = new BoundField();
column.DataField = columnName;
column.HeaderText = "Heading";
column.SortExpression = columnName;

grid.Columns.Add(column);

die Datenquelle ...

SqlDataSource dataSource = new SqlDataSource(
    "System.Data.SqlClient",
    connectionString, 
    generatedSelectCommand);

dann der gridview ...

grid.DataSource = dataSource;
grid.DataKeyNames = mylistOfKeys;
grid.DataBind();

Momentan passiert nichts, wenn ein Benutzer auf eine Spaltenüberschrift klickt, wenn erwartet wird, dass die Spaltendaten sortiert werden. Hat jemand eine Idee was mir fehlt?

Wenn es einen schöneren Weg gibt, wäre das auch hilfreich, da dies für mich chaotisch aussieht!

Antworten auf die Frage(4)

Ihre Antwort auf die Frage