Comment trier un DataGridView colonne a une Valeur de type DateTime, mais s'affiche comme une Chaîne de caractères?
j'ai dans mon programme un datagriview,je veux trier les colonnes par des données,j'utilise:
dataGridView1.Columns["Date"].ValueType = typeof(DateTime);
mais quand je clique sur la colonne de la Date,c'est de ne pas trier correctement.
mon format de la date: 23-12-1997
est incorrect d'écrire le format de date?
- vous pouvez poster votre code de liaison..datagridview a une capacité de l'ordre des colonnes..
- Comment se fait-il trier? Numericall, par ordre alphabétique?
- Qu'avez-vous stocké en tant que valeurs réelles? Sont-ils réellement DateTime? Aso: est-ce de liaison de données? Ou de valeurs explicites?
- pas de databindings,est seulement de la valeur. je orig cellules par :dataGridView1.Les Colonnes["Date"].DefaultCellStyle.Format = "{0:ddd'-'MM'-'aaaa}";
Vous devez vous connecter pour publier un commentaire.
Votre Format de cellule doit être:
Généralement, ce format n'affectera pas le tri de cette colonne si ValueType est de type DateTime. Je soupçonne que vous mettez une Chaîne de valeur dans cette colonne, au lieu d'une valeur DateTime.
Un exemple:
ds = xmlDatadoc.DataSet; dataGridView1.DataSource = ds.DefaultViewManager; dataGridView1.DataMember = "Comp"; dataGridView1.Columns["Data"].ValueType = typeof(DateTime); dataGridView1.Columns["Data"].DefaultCellStyle.Format = "dd-MM-yyyy";
DefaultCellStyle
pour GridViewJ'ai fait beaucoup de recherche et ensuite utilisé quelque chose de vraiment facile. J'ai ajouté une colonne masquée, et les mettre dans une chaîne de caractères date dans le format suivant:
Fichier.GetLastWriteTime(fl).ToString("yyyyMMddhhmm") et de trier la colonne masquée.
Alors que je suis en utilisant un fichier de temps il n'y a pas de raison que n'importe quelle date/heure ne devraient pas travailler.
Je suis tombé sur cette question de la recherche d'un DataGridView problème de tri sur les colonnes de date. Mon cas était un peu plus compliqué que l'OP, je suis donc de poster ici dans l'espoir que cela aide quelqu'un.
Dans mon cas, la source de données de mon DataGridView est fixé à un BindingSource objet. La source de données de mon BindingSource est un objet DataSet. J'ai été en mesure de résoudre le problème de tri, sans ajouter aucun code par la modification d'une propriété dans le concepteur de DataSet. Je suis allé le concepteur Visual Studio et choisi mon jeu de données. Dans la fenêtre propriétés, je choisis "Modifier dans le Concepteur de DataSet". Ensuite, dans le jeu de données Designer, j'ai sélectionné ma Colonne, et a changé sa propriété Type de données du Système.DateTime (il avait déjà été réglée à la Chaîne). Le problème est résolu.