Edition de donnees contenant image
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:
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:
Code:
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;
}
} |
Voila le probleme est que j'obtiens la jolie erreur suivante lorsque j'edite les donnees sans specifier une nouvelle image:
Code:
Operand type clash: nvarchar is incompatible with image
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.
Je m'en remets donc a vous :) Est-ce que vous pourriez m'expliquer ce que je devrais changer ?
Merci d'avance pour vos reponses :)