Bonjour a tous,
Je vais essayer de vous expliquer mon probleme au mieux:
Je souhaite editer les donnees concernant un enregistrement a l'aide d'un formView. J'ai mis ca en place sans trop de probleme en affichant les donnes au chargement de la page et en proposant a l'utilisateur un bouton editer pour changer de mode (passer en mode edition).
Pour ce qui est de la selection et l'edition des donnees j'utilise des procedures stockees.
Voila le code mis en place :
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77 <asp:FormView ID="FormView1" runat="server" DataSourceID="SqlDataSource1" OnItemUpdating="FormView1_ItemUpdating"> <EditItemTemplate> <fieldset> <legend>Edit a venue</legend> <div class="formline"> <label for="Name">Title</label> <asp:TextBox ID="Title" runat="server" Text='<%# Bind("Title") %>' CssClass="s250" /> <asp:RequiredFieldValidator SetFocusOnError="true" ErrorMessage="Title is empty" ID="RequiredFieldValidator2" ControlToValidate="Title" Display="Dynamic" runat="server">*</asp:RequiredFieldValidator> </div> <div class="formline"> <label for="Description">Description</label> <asp:TextBox ID="Description" Runat="server" Text='<%# Bind("Description") %>' CssClass="s300" TextMode="MultiLine" Height="80" Rows="10"/> <asp:RequiredFieldValidator SetFocusOnError="true" ErrorMessage="Description is empty" ID="RequiredFieldValidator1" ControlToValidate="Description" Display="Dynamic" runat="server">*</asp:RequiredFieldValidator> </div> <div class="formline"> <asp:Image ID="ViewImage" runat="server" ImageUrl='<%# Eval("Venue_id", "../Handler.ashx?id={0}&table=1") %>' /> <label>Do not specify any image if you want to keep the one belong.</label> </div> <div class="formline"> <label for="Image">Image</label> <asp:FileUpload ID="Image" Runat="server" FileBytes='<%# Bind("Image") %>' CssClass="s250" /><br /> </div> <div class="button"> <asp:Button ID="Button1_Click" Runat="server" CommandName="Update" Text="Update" /> <asp:Button ID="Button1" Runat="server" CommandName="Cancel" Text="Cancel" /> </div> </fieldset> </EditItemTemplate> <ItemTemplate> <fieldset> <legend>Venue's details</legend> <div class="formline"> <label for="Name">Title</label> <asp:Label ID="Title" runat="server" Text='<%# Bind("Title") %>' CssClass="s250" /> </div> <div class="formline"> <label for="Description">Description</label> <asp:Label ID="Description" Runat="server" Text='<%# Bind("Description") %>' CssClass="s250" Height="120"/> </div> <div class="formline"> <asp:Image ID="Image" runat="server" ImageUrl='<%# Eval("Venue_id", "../Handler.ashx?id={0}&table=1") %>' /> </div> <div class="button"> <asp:Button ID="Button1_Click" Runat="server" CommandName="Edit" Text="Edit" /> </div> </fieldset> </ItemTemplate> </asp:FormView> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:staging %>" SelectCommand="GetVenueDetails" SelectCommandType="StoredProcedure" UpdateCommandType="StoredProcedure" UpdateCommand="UpdateVenueDetails"> <SelectParameters> <asp:QueryStringParameter DefaultValue="0" Name="Venue_ID" QueryStringField="Venue_ID" Type="Int32" /> </SelectParameters> <UpdateParameters> <asp:QueryStringParameter DefaultValue="0" Name="Venue_ID" QueryStringField="Venue_ID" Type="Int32" /> </UpdateParameters> </asp:SqlDataSource>
Voici le code behind:
Voila le probleme est que j'obtiens la jolie erreur suivante lorsque j'edite les donnees sans specifier une nouvelle image:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 protected void FormView1_ItemUpdating(object sender, FormViewUpdateEventArgs e) { if (((Byte[])e.NewValues["Image"]).Length == 0) { e.NewValues["Image"] = null; //SqlDataSource1.UpdateParameters.Add("Image", System.TypeCode.Byte, null); // SqlDataSource1.UpdateParameters.Add( // e.NewValues["Image"] = null; } }
J'ai essaye de preciser explicitement le type de donnees que j'envoie en parametre pour image (c'est les lignes que j'ai commentes au dessus) mais malheureusement sans succes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Operand type clash: nvarchar is incompatible with image
Je m'en remets donc a vousEst-ce que vous pourriez m'expliquer ce que je devrais changer ?
Merci d'avance pour vos reponses![]()
Partager