Bonjour,

j'utilise vs 2008, sql server 2005.

J'essaie de faire une mise a jour dans mon detailsview. Mais ca me donne toutjours une erreur du style : La référence d'objet n'est pas définie à une instance d'un objet. sur mes champs que je voudrais ajouter .par ex (cmdupdate.Parameters.AddWithValue("@last_name", last_name.Text))

J'ai deja des données ds mon dv et je voudrais pouvoir les modifier et les enregistrer dans la base de données.

En plus qd je clique sur modifier le detailview disparait. Il faut que je reclique sur la meme ligne (de mon gridview) pour avoir le detailviwe en mode edit.

Merci bcp de m'aider s'il vous plait

Voici mon code.
le code behind

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
52
53
54
55
56
57
58
59
60
 
 
 
 Protected Sub DetailsView1_ModeChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DetailsViewModeEventArgs) Handles DetailsView1.ModeChanging
        'Set The New Mode
 
        If (DetailsView1.CurrentMode = DetailsViewMode.ReadOnly) Then
            DetailsView1.ChangeMode(DetailsViewMode.Edit)
            DetailsView1.DataBind()
        ElseIf (DetailsView1.CurrentMode = DetailsViewMode.Edit) Then
            DetailsView1.ChangeMode(DetailsViewMode.ReadOnly)
            DetailsView1.DataBind()
        ElseIf (DetailsView1.CurrentMode = DetailsViewMode.Insert) Then
            DetailsView1.ChangeMode(DetailsViewMode.ReadOnly)
            DetailsView1.DataBind()
        End If
 
        'Bind The Data Again (If we dont bind the data here the detailview control behaves weird, Remove to see what i mean)
        'BindAddress()
    End Sub
 
 
Protected Sub DetailsView1_ItemUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DetailsViewUpdateEventArgs) Handles DetailsView1.ItemUpdating
 
        'Update the new information
        ID = Request.QueryString("contact_uuid")
 
        Dim last_name As TextBox = DetailsView1.FindControl("last_name")
        Dim first_name As TextBox = DetailsView1.FindControl("first_name")
        Dim pri_phone_number As TextBox = DetailsView1.FindControl("pri_phone_number")
        Dim email_address As TextBox = DetailsView1.FindControl("email_address")
        Dim contact_uuid As TextBox = DetailsView1.FindControl("contact_uuid")
 
        ' on prépare la connexion
        Dim connectionString As String = "...."
        Dim con As New SqlConnection(connectionString)
 
        Dim requete As String = "UPDATE ca_contact SET last_name= ?,first_name= ?,pri_phone_number= ?,email_address= ? WHERE contact_uuid= ?"
 
        Dim cmdupdate As SqlCommand
 
        cmdupdate = New SqlCommand(requete, con)
        cmdupdate.Parameters.AddWithValue("@last_name", last_name.Text)
        cmdupdate.Parameters.AddWithValue("@first_name", first_name.Text)
        cmdupdate.Parameters.AddWithValue("@pri_phone_number", pri_phone_number.Text)
        cmdupdate.Parameters.AddWithValue("@email_address", email_address.Text)
 
        Dim updatecount As Integer = cmdupdate.ExecuteNonQuery()
        con.Close()
        'lblresults.Text = updatecount & " " & "records updated!"
 
        DetailsView1.ChangeMode(DetailsViewMode.ReadOnly)
 
        DetailsView1.DataBind()
        Using con
            con.Open()
            cmdupdate.ExecuteNonQuery()
 
        End Using
    End Sub
la page aspx

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
 
 
<asp:DetailsView ID="DetailsView1" runat="server" 
             HeaderText="Details Client"
             DataKeyNames="contact_uuid" 
             AutoGenerateRows="False"
             DefaultMode="ReadOnly"
             onmodechanged="DetailsView1_ModeChanging" 
             Height="50px" Width="394px" CellPadding="4" ForeColor="#333333" 
            GridLines="None">
             <FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
             <CommandRowStyle BackColor="#FFFFC0" Font-Bold="True" />
             <RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
             <FieldHeaderStyle BackColor="#FFFF99" Font-Bold="True" />
             <PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />
             <Fields>
                    <asp:BoundField DataField="contact_uuid" HeaderText="cle"/>
                    <asp:BoundField DataField="last_name" HeaderText="Nom"/>
                    <asp:BoundField DataField="first_name" HeaderText="Prenom"/>
                    <asp:BoundField DataField="pri_phone_number" HeaderText="Telephone"/>
                    <asp:BoundField DataField="email_address" HeaderText="Courriel"/>
 
                    <asp:TemplateField HeaderText="ID">
                         <ItemTemplate>
                            <%# Eval("contact_uuid") %>
                         </ItemTemplate>
                         <EditItemTemplate>
                            <asp:TextBox ID="contact_uuid_TextBox" runat="server" Text='<%# Bind("contact_uuid") %>' />
                            <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="contact_uuid_TextBox" Text="*" />
 
                        </EditItemTemplate>
                    </asp:TemplateField>
 
                    <asp:CommandField ShowEditButton="True" ShowInsertButton="True" />
 
 
 
             </Fields>
             <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
             <AlternatingRowStyle BackColor="White" />
        </asp:DetailsView>