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:
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 <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>
Enfin, dans l'évenement
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; } }
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) { } }
Partager