file upload in edit item template

Go To StackoverFlow.com

2

I want to be able to update the image in the database using a list view but I couldn't do it the file upload always give me a null value and couldnt solve the problem could any one help me am a beginner in asp.net and c#

and this is my code:

    <body>
    <form id="form1" runat="server">
    <div>

    <asp:Panel ID="Panel1" runat="server" Height="1138px">
        &nbsp;&nbsp;&nbsp;
        <br />
        <br />
        <br />
        &nbsp;&nbsp;&nbsp;
        <asp:Label ID="Label1" runat="server" Text="Articles" ForeColor="#FF3300"></asp:Label>
        &nbsp;<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" 
            DataSourceID="SqlDataSource1" DataTextField="Name" DataValueField="Name" 
            Height="16px" Width="267px">
        </asp:DropDownList>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
            ConnectionString="<%$ ConnectionStrings:siteDBConnectionString %>" 
            SelectCommand="SELECT * FROM [Articles]"></asp:SqlDataSource>
        &nbsp;&nbsp;
        <br />
        <br />
        &nbsp;&nbsp;
        <asp:ListView ID="ListView1" runat="server" DataKeyNames="Article_No" 
            DataSourceID="SqlDataSource2" GroupItemCount="3" 
            onselectedindexchanged="ListView1_SelectedIndexChanged">
            <AlternatingItemTemplate>
                <td runat="server" style="background-color: #FAFAD2;color: #284775;">
                    Name:
                    <asp:Label ID="NameLabel" runat="server" 
                        Text='<%# Eval("Name") %>' />
                    <br />
                    Subject:
                    <asp:Label ID="SubjectLabel" runat="server" Text='<%# Eval("Subject") %>' />
                    <br />
                    Date:
                    <asp:Label ID="DateLabel" runat="server" Text='<%# Eval("Date") %>' />
                    <br />
                    Picture:
                    <asp:Label ID="PictureLabel" runat="server" Text='<%# Eval("Picture") %>' />
                    <br />
                    Content:
                    <asp:Label ID="ContentLabel" runat="server" Text='<%# Eval("Content") %>' />
                    <br />
                    Article_No:
                    <asp:Label ID="Article_NoLabel" runat="server" 
                        Text='<%# Eval("Article_No") %>' />
                    <br />
                    <asp:Button ID="DeleteButton" runat="server" CommandName="Delete" 
                        Text="Delete" />
                    <br />
                    <asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="Edit" />
                    <br />
                </td>
            </AlternatingItemTemplate>
            <EditItemTemplate>
                <td runat="server" style="background-color: #FFCC66;color: #000080;">
                    Name:
                    <asp:TextBox ID="NameTextBox" runat="server" 
                        Text='<%# Bind("Name", "{0}") %>' />
                    <br />
                    Subject:
                    <asp:TextBox ID="SubjectTextBox" runat="server" 
                        Text='<%# Bind("Subject", "{0}") %>' />
                    <br />
                    Date:
                    <asp:TextBox ID="DateTextBox" runat="server" 
                        Text='<%# Bind("Date", "{0:g}") %>' />
                    <br />
                    Picture:
                    <asp:FileUpload ID="fuimage" runat="server"  />
                    <br />
                    Content:
                    <asp:TextBox ID="ContentTextBox" runat="server" 
                        Text='<%# Bind("Content", "{0}") %>' TextMode="MultiLine" />
                    <br />
                    Article_No:
                    <asp:Label ID="Article_NoLabel1" runat="server" Enabled="False" 
                        Text='<%# Eval("Article_No", "{0}") %>' />
                    <br />
                    <asp:Button ID="UpdateButton" runat="server" CommandName="Update" 
                        OnClick="UpdateButton_Click1" Text="Update" />
                    <br />
                    <asp:Button ID="CancelButton" runat="server" CommandName="Cancel" 
                        Text="Cancel" />
                    <br />
                </td>
            </EditItemTemplate>
            <EmptyDataTemplate>
                <table runat="server" 
                    style="background-color: #FFFFFF;border-collapse: collapse;border-color: #999999;border-style:none;border-width:1px;">
                    <tr>
                        <td>
                            No data was returned.</td>
                    </tr>
                </table>
            </EmptyDataTemplate>
            <EmptyItemTemplate>
                <td runat="server" />
            </EmptyItemTemplate>
            <GroupTemplate>
                <tr ID="itemPlaceholderContainer" runat="server">
                    <td ID="itemPlaceholder" runat="server">
                    </td>
                </tr>
            </GroupTemplate>
            <InsertItemTemplate>
                <td runat="server" style="">
                    Name:
                    <asp:TextBox ID="NameTextBox" runat="server" Text='<%# Bind("Name") %>' />
                    <br />
                    Subject:
                    <asp:TextBox ID="SubjectTextBox" runat="server" Text='<%# Bind("Subject") %>' />
                    <br />
                    Date:
                    <asp:TextBox ID="DateTextBox" runat="server" Text='<%# Bind("Date") %>' />
                    <br />
                    Picture:
                    <asp:TextBox ID="PictureTextBox" runat="server" Text='<%# Bind("Picture") %>' />
                    <br />
                    Content:
                    <asp:TextBox ID="ContentTextBox" runat="server" Text='<%# Bind("Content") %>' />
                    <br />
                    <asp:Button ID="InsertButton" runat="server" CommandName="Insert" 
                        Text="Insert" />
                    <br />
                    <asp:Button ID="CancelButton" runat="server" CommandName="Cancel" 
                        Text="Clear" />
                    <br />
                </td>
            </InsertItemTemplate>
            <ItemTemplate>
                <td runat="server" style="background-color: #FFFBD6;color: #333333;">
                    Name:
                    <asp:Label ID="NameLabel" runat="server" 
                        Text='<%# Eval("Name") %>' />
                    <br />
                    Subject:
                    <asp:Label ID="SubjectLabel" runat="server" Text='<%# Eval("Subject") %>' />
                    <br />
                    Date:
                    <asp:Label ID="DateLabel" runat="server" Text='<%# Eval("Date") %>' />
                    <br />
                    Picture:
                    <asp:Label ID="PictureLabel" runat="server" Text='<%# Eval("Picture") %>' />
                    <br />
                    Content:
                    <asp:Label ID="ContentLabel" runat="server" Text='<%# Eval("Content") %>' />
                    <br />
                    Article_No:
                    <asp:Label ID="Article_NoLabel" runat="server" 
                        Text='<%# Eval("Article_No") %>' />
                    <br />
                    <asp:Button ID="DeleteButton" runat="server" CommandName="Delete" 
                        Text="Delete" />
                    <br />
                    <asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="Edit" />
                    <br />
                </td>
            </ItemTemplate>
            <LayoutTemplate>
                <table runat="server">
                    <tr runat="server">
                        <td runat="server">
                            <table ID="groupPlaceholderContainer" runat="server" border="1" 
                                style="background-color: #FFFFFF;border-collapse: collapse;border-color: #999999;border-style:none;border-width:1px;font-family: Verdana, Arial, Helvetica, sans-serif;">
                                <tr ID="groupPlaceholder" runat="server">
                                </tr>
                            </table>
                        </td>
                    </tr>
                    <tr runat="server">
                        <td runat="server" 
                            style="text-align: center;background-color: #FFCC66;font-family: Verdana, Arial, Helvetica, sans-serif;color: #333333;">
                            <asp:DataPager ID="DataPager2" runat="server" PageSize="12">
                                <Fields>
                                    <asp:NextPreviousPagerField ButtonType="Button" ShowFirstPageButton="True" 
                                        ShowLastPageButton="True" />
                                </Fields>
                            </asp:DataPager>
                        </td>
                    </tr>
                </table>
            </LayoutTemplate>
            <SelectedItemTemplate>
                <td runat="server" 
                    style="background-color: #FFCC66;font-weight: bold;color: #000080;">
                    Name:
                    <asp:Label ID="NameLabel" runat="server" 
                        Text='<%# Eval("Name") %>' />
                    <br />
                    Subject:
                    <asp:Label ID="SubjectLabel" runat="server" Text='<%# Eval("Subject") %>' />
                    <br />
                    Date:
                    <asp:Label ID="DateLabel" runat="server" Text='<%# Eval("Date") %>' />
                    <br />
                    Picture:
                    <asp:Label ID="PictureLabel" runat="server" Text='<%# Eval("Picture") %>' />
                    <br />
                    Content:
                    <asp:Label ID="ContentLabel" runat="server" Text='<%# Eval("Content") %>' />
                    <br />
                    Article_No:
                    <asp:Label ID="Article_NoLabel" runat="server" 
                        Text='<%# Eval("Article_No") %>' />
                    <br />
                    <asp:Button ID="DeleteButton" runat="server" CommandName="Delete" 
                        Text="Delete" />
                    <br />
                    <asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="Edit" />
                    <br />
                </td>
            </SelectedItemTemplate>
        </asp:ListView>
        <asp:SqlDataSource ID="SqlDataSource2" runat="server" 
            ConnectionString="<%$ ConnectionStrings:siteDBConnectionString %>" 
            DeleteCommand="DELETE FROM [Articles] WHERE [Article_No] = @Article_No" 
            InsertCommand="INSERT INTO [Articles] ([Name], [Subject], [Date], [Picture], [Content]) VALUES (@Name, @Subject, @Date, @Picture, @Content)" 
            SelectCommand="SELECT [Name], [Subject], [Date], [Picture], [Content], [Article_No] FROM [Articles] WHERE ([Name] = @Name)" 

            UpdateCommand="UPDATE [Articles] SET [Name] = @Name, [Subject] = @Subject, [Date] = @Date, [Picture] = @Picture, [Content] = @Content WHERE [Article_No] = @Article_No">
            <DeleteParameters>
                <asp:Parameter Name="Article_No" Type="Int32" />
            </DeleteParameters>
            <InsertParameters>
                <asp:Parameter Name="Name" Type="String" />
                <asp:Parameter Name="Subject" Type="String" />
                <asp:Parameter Name="Date" Type="DateTime" />
                <asp:Parameter Name="Picture" Type="String" />
                <asp:Parameter Name="Content" Type="String" />
            </InsertParameters>
            <SelectParameters>
                <asp:ControlParameter ControlID="DropDownList1" Name="Name" 
                    PropertyName="SelectedValue" Type="String" />
            </SelectParameters>
            <UpdateParameters>
                <asp:Parameter Name="Name" Type="String" />
                <asp:Parameter Name="Subject" Type="String" />
                <asp:Parameter Name="Date" Type="DateTime" />
                <asp:Parameter Name="Picture" Type="String" />
                <asp:Parameter Name="Content" Type="String" />
                <asp:Parameter Name="Article_No" Type="Int32" />
            </UpdateParameters>
        </asp:SqlDataSource>
        <br />
        &nbsp;
        <br />
        <br />
    </asp:Panel>

</div>
</form>

and this is the code behind that ive put:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.IO;
    using System.Data.SqlClient;

    namespace WebApplication2
    {
     public partial class WebForm4 : System.Web.UI.Page
     {
    SqlConnection cnn = new SqlConnection(@"Data           Source=.\SQLEXPRESS;AttachDbFilename=C:\Documents and Settings\Moeman\My   Documents\siteDB.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void DateTextBox_TextChanged(object sender, EventArgs e)
    {


    }

    protected void ListView1_SelectedIndexChanged(object sender, EventArgs e)
    {

    }

    protected void Button1_Click(object sender, EventArgs e)
    {

    }



    protected void UpdateButton_Click1(object sender, EventArgs e)
    {
        FileUpload fuimage = (FileUpload)ListView1.FindControl("fuimage");
        String fupload = fuimage.FileName;

        if (fuimage != null && fuimage.HasFile)
        {

            fuimage.SaveAs(Server.MapPath("~\\Images\\" + fupload.Trim()));


            string path = "~\\Images\\" + fupload.Trim();
            cnn.Open();
            SqlCommand cmd = new SqlCommand("update Articles set Picture=@Picture ", cnn);
            if (fuimage.HasFile)
            {
                cmd.Parameters.AddWithValue("@Picture", path);
            }
            else
            {
                cmd.Parameters.AddWithValue("@Picture", "");
            }
            cmd.ExecuteNonQuery();
            cnn.Close();
        }
    }
}

}

2012-04-04 23:48
by ninoal


2

Use ListView.EditItem instead to find your FileUpload control.

FileUpload fuimage = (FileUpload)ListView1.EditItem.FindControl("fuimage");
2012-04-04 23:56
by Rango
ive tried this now it doesnt give me an error but it adds an empty string to the databas - ninoal 2012-04-05 00:02
actually if the image field in db already empty it leave it empty and if not it gives that error (String or binary data would be truncated. The statement has been terminated. - ninoal 2012-04-05 00:07
Try to use the FormView's ItemUpdating event instead since you've already set the CommandName to Update and set the NewValues property accordingly. http://stackoverflow.com/a/1132414/28424 - Rango 2012-04-05 00:10
thank you now it worke - ninoal 2012-04-07 02:37
Ads