Erreur sur DetailsView_ItemUpdating
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:
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:
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> |