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)
        {
        }
    }