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 :

Calcul de Champ avant update


Sujet :

ASP.NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 26
    Par défaut Calcul de Champ avant insert
    Bonjour,

    Malgré mes recherches, je n'ai pas trouvé la marche à suivre pour régler mon problème.

    Pour résumer,
    J'ai une Table avec, disons, 3 champs:
    CHAMP_A, CHAMP_B et CHAMP_C

    CHAMP_C est en fait le résultat de (CHAMP_A - CHAMP_B)


    J'ai créé un DataSet sur cette table, puis un ObjectDataSource lié a ce DataSet et un FormView lié à l'ObjectDataSource.

    Dans le FormView, on peut modifier CHAMP_A et CHAMP_B en mode 'EditItemTemplate' (un Label lié au CHAMP_C étant aussi présent en mode Visible="False")

    Ce que je voudrais, c'est que le calcul de CHAMP_C se fasse 'd'une manière ou d'une autre) avant l'update.



    J'ai essayé de gérer l'évenement "OnItemUpdating", mais quand je modifie le texte du Label lié au Champ_C, la modification n'est pas prise en compte.


    Auriez-vous une idée, svp ? je pense que c'est assez courant de faire des traitements de ce genre avant un update, mais je n'ai rien trouvé :s

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 54
    Par défaut
    Pourquoi faire un champ supplémentaire alors que tu peux le calculer seulement quand tu en as besoin?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 26
    Par défaut
    Parce qu'on ne fait pas toujours ce qu'on veut ;-)

    Mais bon, passons. J'ai quand meme le meme problème pour un autre cas de figure, si vous préférez:


    Dans un FormView, j'ai entre autres, une textBox:
    <asp:TextBox ID="maTextBox" runat="server" Text=<%#Bind("champ1") %> />

    Et, dans la page code behind, dans la méthode maFormView_ItemInserting, j'aimerai pouvoir modifier la valeur de ce Textbox et que cette valeur soit insérée en base.

    public void maFormView_ItemInserting (object sender, FormViewInsertEventArgs e)
    {
    string str = methodeQuiRetourneUnString();
    ((TextBox)maFormView.FindControl("maTextBox")).Text = str;
    }

    Le soucis, c'est que cette action écrase le '<%#Bind("champ1") %>' et donc cette valeur n'est jamais mise en base lors de l'insert...

    Comment faire pour modifier ma valeur de textbox en gardant le lien vers le champ de ma table ??

    Merci d'avance

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 26
    Par défaut
    J'ai tenté de passer par la méthode Inserting de l'objectDataSource auquel le FormView est lié. Je suis toujours bloqué, je n'arrive pas à modifier la valeur à insérer à cet endroit.

    private void monObjectDataSource_Inserting (object sender, ObjectDataSourceMethodEventArgs e)
    {
    string str = methodeQuiRetourneUnString();

    monObjectDataSource. ??? = str;

    }

    Quel attribut d'objectDataSource puis-je utiliser pour y mettre ma valeur ??

    (j'ai aussi essayé de passer par:

    e.InputParameters["champ1"], mais je ne sais pas non plus quel attribut utiliser pour setter ma valeur.

    Avez-vous une idée ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 26
    Par défaut
    Résolu !


    Alors je vous donne La Stuss :

    Page ASPX:

    <asp:ObjectDataSource ID="monODS" ... >
    ...
    <InsertParameters>
    <asp:ControlParameter Name="champ1" ControlID="maFormView$monTextBox" PropertyName="Text" Type="String"/>
    ...
    </InsertParameters>
    ...
    </asp:ObjectDataSource>


    <asp:FormView ID="maFormView" DataSourceID="monODS" OnDataBound="maFormView_DataBound" ...>
    ...
    <InsertItemTemplate>
    ...
    <asp:TextBox ID="monTextBox" runat="server" Visible="False" />
    <br />
    ...
    </InsertItemTemplate>
    ...
    </asp:FormView>


    Page ASPX.CS:

    ...
    private void InitializeComponent ()
    {
    this.maFormView.DataBound += new System.EventHandler (maFormView_DataBound);
    ...
    }


    public void maFormView_DataBound (object sender, EventArgs e)
    {
    if (maFormView.CurrentMode == FormViewMode.Insert)
    {
    ((TextBox)maFormView.FindControl("monTextBox")).Text = getMaString();
    }
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] calcul de deux champs avant validation du formulaire
    Par laure07 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 27/04/2011, 12h15
  2. Requête calcul sur champs
    Par tikawua dans le forum Langage SQL
    Réponses: 6
    Dernier message: 12/10/2005, 15h26
  3. Réponses: 2
    Dernier message: 15/06/2005, 15h57
  4. [TUNING]calculs de champs
    Par booth dans le forum Oracle
    Réponses: 5
    Dernier message: 30/05/2005, 18h36

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