Comment faire pour trier les colonnes dans un ASP.NET GridView si vous utilisez une source de données personnalisée?

Je ne peux pas obtenir mon GridView pour permettre à l'utilisateur de trier une colonne de données quand je suis en utilisant une mesure SqlDataSource.

J'ai un GridView dans lequel le code de l'ASP référence dans le code HTML est minime:

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

Dans le code-behind-je joindre un créé dynamiquement SqlDataSource (les colonnes qu'il contient ne sont pas toujours les mêmes, de sorte que le SQL utilisé pour créer il est construit à l'exécution). Par exemple:

- Je configurer les colonnes...

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

grid.Columns.Add(column);

la source de données...

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

puis le gridview...

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

Pour le moment rien ne se passe lorsqu'un utilisateur clique sur un en-tête de colonne lorsque je m'attends à faire le tri entre les données de la colonne. Quiconque les idées de ce que je suis absent?

Si il y a une jolie manière de faire qui serait aussi utile que cela puisse sembler malpropre pour moi!

OriginalL'auteur Ben L | 2008-09-26