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 :

Mise à jour avec un formview et un object datasource


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 25
    Par défaut Mise à jour avec un formview et un object datasource
    Bonjour
    Je cherche à mettre à jour une table avec une formview .
    Il n'y a pas d'erreur mais l'enregistrement n'est pas mis à jours.
    Avec la même logique, l'insertion marche à merveille.
    Sur mon webform , j'ai le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    <asp:FormView ID="FormView1" runat="server" DataSourceID="PeriDataSource" OnItemInserted="FormView1_ItemInserted" AllowPaging="True"  DataKeyNames="ID_PERIPHERIQUE">
            <EditItemTemplate>
                ID_PERIPHERIQUE:
                <asp:Label ID="ID_PERIPHERIQUELabel1" runat="server" Text='<%# Eval("ID_PERIPHERIQUE") %>'></asp:Label><br />
                FOURNISSEUR:
                <asp:DropDownList ID="FourniDropList" runat="server" DataSourceID="FourniSource" DataTextField="RaisonSociale" DataValueField="ID_FOURNISSEUR">
                </asp:DropDownList><asp:ObjectDataSource ID="FourniSource" runat="server" 
                    SelectMethod="GetAllFournisseur" TypeName="FournisseurBll"></asp:ObjectDataSource>
                <br />
                Prix Achat:
                <br />
                <asp:TextBox ID="PrixAchatTextBox" runat="server" Text='<%# Bind("PrixAchat") %>'></asp:TextBox><br />
     
                observation:
                <asp:TextBox ID="observationTextBox" runat="server" Text='<%# Bind("observation") %>'></asp:TextBox><br />
                Etat:<br />
                <asp:RadioButtonList ID="EtatRadioList1" runat="server" DataSourceID="EtatSource" DataTextField="TexteEtat" DataValueField="ValeurEtat">
                </asp:RadioButtonList><asp:ObjectDataSource ID="EtatSource" runat="server" 
                    SelectMethod="GetAllEtat" TypeName="EtatBLL"></asp:ObjectDataSource>
                 Type:
                <br />
                <asp:DropDownList ID="TypeDropList" runat="server" DataSourceID="TypeSource" DataTextField="TextType" DataValueField="ID_TYPE">
                </asp:DropDownList><asp:ObjectDataSource ID="TypeSource" runat="server" 
                    SelectMethod="GetAllTypePeri" TypeName="TypePeriBLL"></asp:ObjectDataSource>
                <br />
                <br />
                <br />
                <asp:LinkButton ID="UpdateButton" runat="server" CausesValidation="True" CommandName="Update"
                    Text="Mettre à jour" ></asp:LinkButton>
                <asp:LinkButton ID="UpdateCancelButton" runat="server" CausesValidation="False" CommandName="Cancel"
                    Text="Annuler"></asp:LinkButton>
            </EditItemTemplate>
            <InsertItemTemplate>
     
            </InsertItemTemplate>
            <ItemTemplate>
     
            </ItemTemplate>
        </asp:FormView>
        <asp:ObjectDataSource ID="PeriDataSource" runat="server" DataObjectTypeName="Peripherique"
            InsertMethod="insertPeri" SelectMethod="GetPeriById"
            TypeName="PeriBLL" OnInserting="PeriDataSource_Inserting" OldValuesParameterFormatString="original_{0}" UpdateMethod="updatePeripherique" OnUpdating="PeriDataSource_Updating" >
            <SelectParameters>
                <asp:ControlParameter ControlID="DropDownList1" Name="id" PropertyName="SelectedValue"
                    Type="Int32" DefaultValue="-1" />
            </SelectParameters>
        </asp:ObjectDataSource>
    Dans ma classe métier PeriBLL, j'ai le code suivant,Oserver la méthode updatePeripherique(Peripherique unPeri)



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
     
    public class PeriBLL
    {
        PeripheriqueTableAdapter _periAdapter = null;
        protected PeripheriqueTableAdapter Adapter
        {
     
            get
            {
                if (_periAdapter == null)
                    _periAdapter = new PeripheriqueTableAdapter();
                return _periAdapter;
            }
        }
     
    // retourne tous les périphériques
        [System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Select, true)]
        public FinTrack.PeripheriqueDataTable GetAllPeri()
        {
            return Adapter.GetAllPeripheriques();
        }
     
        //Retourne les périphériques par leurs Id
        [System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Select, false)]
        public FinTrack.PeripheriqueDataTable GetPeriById(int id)
        {
           if (id < 0) return Adapter.GetAllPeripheriques();
           else return Adapter.GetPeriByID(id);
        }
        //Insérer un Péripherique
        [System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Insert, true)]
     
        public object  insertPeri(Peripherique unPeri)
        {
           Object ob= Adapter.InsertPeripherique((long)unPeri.ID_FOURNISSEUR,unPeri.Type,(long)unPeri.Etat,
                (float)unPeri.PrixAchat,unPeri.DateArrive ,System.DateTime.Today.ToString(),unPeri.Observation);
           return ob;
     
        }
     
        //Mettre un Périphérique à jour
        [System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Update, true)]
     
        public object updatePeripherique(Peripherique unPeri)
        {
            Object ob = Adapter.UpdatePeripherique((long)unPeri.ID_FOURNISSEUR, (int)unPeri.Type, (float)unPeri.PrixAchat, unPeri.DateArrive, unPeri.Observation, (long)unPeri.Etat, (int)unPeri.IdPeripherique);
            return ob;
        }
     
    }
    Enfin, dans l'évenement

    PeriDataSource_Updating je crée un objet Périphérique et je récupère les champs du formview et j'ajoute cet obet au paramettre du datasource à travers le paramètre e de type ObjectDataSourceMethodEventArgs

    j'ai le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
     protected void PeriDataSource_Updating(object sender, ObjectDataSourceMethodEventArgs e)
        { 
            Peripherique unPeri = new Peripherique();
            PeriBLL unPeriBll = new PeriBLL();
     
          try 
            {
                unPeri.ID_FOURNISSEUR = int.Parse(((DropDownList)FormView1.FindControl("FourniDropList")).SelectedValue);
     
     
                unPeri.Type = int.Parse(((DropDownList)FormView1.FindControl("TypeDropList")).SelectedValue);
                unPeri.PrixAchat = double.Parse(((TextBox)FormView1.FindControl("TypeDropList")).Text);
                unPeri.Observation = ((TextBox)FormView1.FindControl("observationTextBox")).Text;
                unPeri.Etat = int.Parse(((RadioButtonList)FormView1.FindControl("EtatRadioList1")).SelectedValue);
                unPeri.DateArrive = ((TextBox)FormView1.FindControl("DateArriveTextBox")).Text;
     
                unPeri.IdPeripherique = Convert.ToInt32(FormView1.DataKey.Value); 
                e.InputParameters.Add("unPeri", unPeri);
     
     
            }
            catch (Exception uneEx)
            {
            }
        }

  2. #2
    Membre Expert Avatar de bossun
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 359
    Par défaut
    tu fais une faute au niveau de ta couche métier..

    ta methode update doit comme parametre les champs que tu veux mettre à jour ( y compris la clé primaire)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        [System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Update, true)]
     
        public object updatePeripherique(PrixAchat,observateur,...)
        {
     
              Peripherique unPeri = new Peripherique();
     
                unPeri.PrixAchat = PrixAchat;
                unPeri.Observation = observateur;
     
              return TonAdapter.Update(unPeri);
     
        }

  3. #3
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 25
    Par défaut
    Merci beaucoup pour ce précieux conseil

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

Discussions similaires

  1. TIBDataSet comment faire de la mise à jour avec jointure
    Par uluru dans le forum Connexion aux bases de données
    Réponses: 8
    Dernier message: 08/07/2006, 10h09
  2. Mise à jour avec les datasetproviders
    Par kafui dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/06/2006, 14h25
  3. Réponses: 3
    Dernier message: 22/12/2005, 17h47
  4. Mise à jour avec jointure
    Par taupain dans le forum Bases de données
    Réponses: 5
    Dernier message: 09/07/2004, 11h27

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