Tout le reste étant égal, une colonne BoundField dans un fichier asp: GridView est triable, mais une colonne TemplateField ne l'est pas. Pourquoi donc? Si vous cliquez sur l'en-tête BoundField, vous obtiendrez un post-back et mon gestionnaire d'événements Selecting sera appelé. Il retourne juste un IQueryable et ne gère pas lui-même le tri. La documentation indique simplement que la "source de données sous-jacente doit supporter le tri" pour que la GridView puisse être triée. Apparemment, LinqDataSource supporte le tri, sinon le BoundField ne serait pas triable. Ou est-ce que je manque quelque chose?ASP.Net: Tri, GridView BoundColumn vs. TemplateColumn
1
A
Répondre
2
J'ai donc posé la mauvaise question. Il s'avère que le GridView est réellement triable, même lorsque les colonnes TemplateField sont utilisées. TemplateField ne prend pas en charge l'attribut EncodeHtml disponible avec la balise BoundField. Cela signifie qu'il n'est pas possible de forcer des sauts de ligne dans les en-têtes TemplateField avec l'attribut HeaderText. L'utilisation d'un HeaderTemplate est la solution pour cela, mais en utilisant simplement du texte statique, la colonne n'est plus triable.
This link a la solution.
+1 pour une bonne question. Je suis fatigué d'ajouter un événement de tri juste parce que j'ai ajouté un TemplateField. Je suppose que le framework attend que le TemplateField contienne un ou plusieurs contrôles, auquel cas le tri ne fonctionnera pas. Cependant, le TemplateField doit toujours connaître les données liées. –
Je pense que je suis sur quelque chose. Cela a à voir avec HeaderTemplate. Si je supprime le HeaderTemplate du TemplateField et que j'utilise simplement l'attribut HeaderText, il apparaît en tant que lien et je peux trier le TemplateColumn sans un gestionnaire de tri. – cdonner