IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Conversion d'une chaine en date lors de la mise à jour d'un enregistrement d'un GridView


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut Conversion d'une chaine en date lors de la mise à jour d'un enregistrement d'un GridView
    Salut,

    J'ai une gridview dont les méthodes Select, Insert, Update et Delete sont "mappées" sur un objet métier.

    Parmis les propriétés de l'objet, j'ai des dates. Or, au moment de l'insertion, le code plante à cause d'un pb de conversion des date. La valeur envoyée est une chaine et l'erreur se produit exactement au moment de l'affectation de la valeur à la propriété.

    Où devrais-je placer cette conversion pour que le script marche?

    Voici la pile:
    [InvalidOperationException: Impossible de convertir la valeur du paramètre 'EndDate' de 'System.String' à 'System.DateTime']
    System.Web.UI.WebControls.ObjectDataSourceView.ConvertType(Object value, Type type, String paramName) +378
    System.Web.UI.WebControls.ObjectDataSourceView.BuildObjectValue(Object value, Type destinationType, String paramName) +167
    System.Web.UI.WebControls.ObjectDataSourceView.BuildDataObject(Type dataObjectType, IDictionary inputParameters) +214
    System.Web.UI.WebControls.ObjectDataSourceView.ExecuteUpdate(IDictionary keys, IDictionary values, IDictionary oldValues) +462
    System.Web.UI.DataSourceView.Update(IDictionary keys, IDictionary values, IDictionary oldValues, DataSourceViewOperationCallback callback) +92
    System.Web.UI.WebControls.GridView.HandleUpdate(GridViewRow row, Int32 rowIndex, Boolean causesValidation) +907
    System.Web.UI.WebControls.GridView.HandleEvent(EventArgs e, Boolean causesValidation, String validationGroup) +704
    System.Web.UI.WebControls.GridView.OnBubbleEvent(Object source, EventArgs e) +95
    System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +37
    System.Web.UI.WebControls.GridViewRow.OnBubbleEvent(Object source, EventArgs e) +123
    System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +37
    System.Web.UI.WebControls.LinkButton.OnCommand(CommandEventArgs e) +118
    System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument) +135
    System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
    System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
    System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +175
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565
    Merci d'avance.

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    a priori dans les évènements Selecting, Updating, Inserting et Deleting du ObjectDataSource, tu dois pouvoir jouer sur les valeurs des paramètres avant que l'opération soit effectuée

  3. #3
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    La fonction "UPDATE" de la classe de la BLL attend un objet de transfert de données. L'erreur se produit au moment du "set" de la date (jj/mm/aaaa h:mn:s) car la datasource ne semble pas typer les données. Ces dernière sont typée System.String.

    L'erreur ne se produit plus quand je formate la date en enlevant l'heure ({0:MM/dd/yyyy}). Cependant, j'aimerais savoir à quel moment je peux intervenir pour spécifier la culture par exemple. Parce que là elle est forcée en-US alors que je voudrais qu'elle tienne compte de la culture du navigateur.

    [EDIT] je viens de faire un test en mettant au format français dd/MM et j'ai une erreur de conversion[/EDIT]


    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Il suffirait pas de mettre culture="auto" dans le web.config ou la directive @Page ? Ca utiliserait automatiquement la langue du navigateur...

  5. #5
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    C'est pas le comportement par défaut?

    Le pb, c'est que dans les conversion de dates il faut être explicite sur le format. Sinon, on a des surprises. Comme maintenant.

    Merci de ton aide


    Interessant: https://connect.microsoft.com/Visual...dbackID=105015
    "Winter is coming" (ma nouvelle page d'accueil)

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Immobilis Voir le message
    C'est pas le comportement par défaut?
    Je ne crois pas...

    EDIT:
    Ca fait plaisir de voir à quel point MS se donne du mal pour résoudre les bugs signalés

Discussions similaires

  1. Conversion d'une chaine en date lors d'une insertion
    Par fedexpress dans le forum Développement
    Réponses: 1
    Dernier message: 27/10/2009, 13h08
  2. Réponses: 5
    Dernier message: 11/06/2009, 16h27
  3. [1.x] [crud] erreur lors de la mise à jour d'un enregistrement
    Par Mitaka dans le forum Symfony
    Réponses: 3
    Dernier message: 13/06/2008, 11h46
  4. conversion d'une chaine en date
    Par monphp dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 31/05/2007, 10h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo