[asp.net 2] GridView et CultureInfo

cs_bigflo93 Messages postés 50 Date d'inscription mardi 21 octobre 2003 Statut Membre Dernière intervention 13 septembre 2008 - 25 avril 2006 à 17:24
cs_bigflo93 Messages postés 50 Date d'inscription mardi 21 octobre 2003 Statut Membre Dernière intervention 13 septembre 2008 - 26 avril 2006 à 10:02
Salut à tous :)

Je rencontre un pb assez embêtant en asp.net 2.0 et avec le nouveau controle GridView...
En fait, il s'agit d'un problème de date et de format de date. Dans ma base de données, j'ai un champ contenant une date au format "dd/mm/yy". Mais je développe sur un Windows XP en Anglais. De même, le serveur a un OS en anglais.
Du coup, quand je parse mon champ pour le récuperer dans un DateTime, le .Net me prend la date au format "mm/dd/yy".
J'ai réussi à bien formater la date en utilisant les CultureInfo du framework
DateTime dt = DateTime.Parse("valeur_de_mon_champ", new CultureInfo("fr-FR"));

Maintenant, les données que je récupère de ma base sont affichées dans un GridView....
Donc la colonne affichant la date contient un label pour la ligne en mode "view", et une textbox en mode "edit"...J'utilise la propriété DataFormatString pour bien formatter ma date et avoir le bon format "dd/mm/yy". Cependant, quand je passe en mode Edit et que je mets une date du style "30/12/06" ... cela lève l'exception suivante "Cannot convert value of parameter 'ValidityDate' from 'System.String' to
'System.DateTime'"

Je précise que mon GridView est rempli selon une classe métier ...

Donc voilà mon problème... Apparement, c'est du au fait que lorsque la GridView veux convertir la valeur de la textbox en DateTime, ba le GridView est toujours dans la culture US... Comment lui préciser la cultureInfo à utiliser ?

Merci d'avance pour votre aide..

2 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
25 avril 2006 à 18:23
Bonjour,

il faut préciser la culture dans le global.asax, en effet le global.asax est le premiere chose appelé ou tu peux coder :) (je suis pas clair je crois la :p)


<HR>
Cyril - MVS - MCP
0
cs_bigflo93 Messages postés 50 Date d'inscription mardi 21 octobre 2003 Statut Membre Dernière intervention 13 septembre 2008
26 avril 2006 à 10:02
Salut :)

J'ai déjà un truc dans mon Global.asax

void Application_BeginRequest(object sender, EventArgs e)
{
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("fr-fr");
}

mais cette méthode n'existait pas quand j'ai crée le global.asax avec mon Visual Web Developper Express .. donc je me pose la question si c'est bien dans cette fonction qu'il faut le mettre ou pas. Ou alors, c'est pas ça qu'il faut mettre lol
En tout cas, quand j'ai crée le fichier avec l'IDE, Visual m'a crée automatiquement ces méthodes: Application_Start, Application_End, Application_Error, Session_Start, Session_End. Si ça peut aider...

De plus, j'ai aussi rajouter une section Globalization dans mon web.config
<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="fr-FR" uiCulture="fr-FR" />

Donc il me semble que normalement, j'ai tout ce qu'il faut ^^ mais ya une "couille" quelque part :p

Sinon, pour info, mon GridView a pour source un ObjectDataSource, qui va puiser les infos dans la classe UserCollection, qui est en fait une surcouche de la classe User (celle qui contient réellement les infos). Alors je me suis dit que peut être yavait moyen de faire une feinte quand l'ObjectDataSource remplit les infos via les propriétés de ma classe User... mais en fait, il va même pas jusque là. L'exception se produit avant. Donc pas moyen de bidouiller au moment de l'assignation des valeurs ... :'(

Aidez moi, je suis perdu
0
Rejoignez-nous