c# - 编辑项目模板中的文件上传

标签 c# asp.net listview

我希望能够使用 ListView 更新数据库中的图像,但我做不到 文件上传总是给我一个空值并且无法解决问题任何人都可以帮助我作为 asp.net 和 c# 的初学者

这是我的代码:

    <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>

这是我放置的代码:

    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();
        }
    }
}

}

最佳答案

使用ListView.EditItem而是找到您的 FileUpload 控件。

FileUpload fuimage = (FileUpload)ListView1.EditItem.FindControl("fuimage");

关于c# - 编辑项目模板中的文件上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10020856/

相关文章:

asp.net - 在 ASP.NET Blazor Web Assembly 客户端应用程序中使用 Auth0 注销后出现登录提示

android - 如何下拉刷新 ListView 而不重复它的项目

c# - HttpWeb 请求错误 : 503 server unavailable

c# - 如何使用 C# .NET 从 XML 字符串中读取处理指令?

c# - 什么是局部变量(在 CountdownEvent 类的 MSDN 代码示例中)?

c# - RadGrid,dropDown SelectedIndexChanged 事件在 asp FormView 中不起作用

asp.net - 无法加载文件或程序集 Nlog.web.aspnetcore 或其依赖项之一

android - 超过 1 个不同的网址,只有一个 ListView

java - android发送 Intent 额外

c# - 如何在 C# 中获取另一个节点值指定的节点值