c# - 在Gridview中上传文件,完成后在同一行显示

标签 c# asp.net gridview

我正在尝试使用 Asp.net 将文件从 Gridview 上传 存储到一个文件夹中。

这是我生成上传列和按钮以及文件上传控件的标记代码。

  <asp:TemplateField HeaderText="Upload">
        <ItemTemplate>
            <asp:FileUpload ID="FileUpload1" runat="server" EnableViewState="true" AllowMultiple="true" />
            <asp:Button ID="btnUpload" runat="server" CommandName="Upload"  Text="OK" style=" color: #ff0000" OnClick="btnUpload_Click"/> 
        </ItemTemplate>
        </asp:TemplateField>  

我有我的代码隐藏来处理 btnUpload_Click,如下所示:

 protected void btnUpload_Click(object sender, GridViewCommandEventArgs e)
{
    Response.Write("File has been passed");
    Button bts = e.CommandSource as Button;
    Response.Write(bts.Parent.Parent.GetType().ToString());
    if (e.CommandName.ToLower() != "upload")
    {
        return;
    }
    FileUpload fu = bts.FindControl("FileUpload4") as FileUpload;//here
    if (fu.HasFile)
    {
        bool upload = true;
        string fleUpload = Path.GetExtension(fu.FileName.ToString());
        if (fleUpload.Trim().ToLower() == ".xls" | fleUpload.Trim().ToLower() == ".xlsx")
        {
            fu.SaveAs(Server.MapPath("~/UpLoadPath/" + fu.FileName.ToString()));
            string uploadedFile = (Server.MapPath("~/UpLoadPath/" + fu.FileName.ToString()));
            //Someting to do?...
        }
        else
        {
            upload = false;
            // Something to do?...
        }
        if (upload)
        {
            // somthing to do?...
        }
    }
    else
    {
        //Something to do?...
    }
} 

我收到这个错误:

CS0123: No overload for 'btnUpload_Click' matches delegate 'System.EventHandl

有人可以帮帮我吗?

最佳答案

您将 CommandClick 事件与您的按钮绑定(bind)。你的按钮代码应该是这样的-

  <asp:TemplateField HeaderText="Upload">
        <ItemTemplate>
            <asp:FileUpload ID="FileUpload1" runat="server" EnableViewState="true" AllowMultiple="true" />
            <asp:Button ID="btnUpload" runat="server" CommandName="Upload"  Text="OK" style=" color: #ff0000"/> 
        </ItemTemplate>
        </asp:TemplateField>

并从后面的代码捕获命令而不是事件。喜欢-

 protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    Response.Write("File has been passed");
    Button bts = e.CommandSource as Button;
    Response.Write(bts.Parent.Parent.GetType().ToString());
    if (e.CommandName.ToLower() != "upload")
    {
        return;
    }
    FileUpload fu = bts.FindControl("FileUpload1") as FileUpload;//here
    if (fu.HasFile)
    {
        bool upload = true;
        string fileName = Path.GetFileName(fu.PostedFile.FileName);
        string fleUpload = Path.GetExtension(fu.PostedFile.FileName);
        if (fleUpload.Trim().ToLower() == ".xls" || fleUpload.Trim().ToLower() == ".xlsx")
        {
            fu.SaveAs(Server.MapPath("~/UpLoadPath/" + fileName));
            string uploadedFile = (Server.MapPath("~/UpLoadPath/" + fileName ));
            //Someting to do?...
        }
        else
        {
            upload = false;
            // Something to do?...
        }
        if (upload)
        {
            // somthing to do?...
        }
    }
    else
    {
        //Something to do?...
    }
} 

以上我假设您的 gridview IDGridView1。另一个文件 uploader 控件的 ID 与您后面的代码不匹配。这应该有效。

关于c# - 在Gridview中上传文件,完成后在同一行显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36733058/

相关文章:

c# - 算法大O分析

c# - 返回 Web 窗体中等效的文件

jquery - 使用 jQuery 选项卡掌握详细信息

c# - Caliburn.Micro 实现 INotifyDataErrorInfo

c# - 通过 C# 在 Lotus Notes 中预订房间

asp.net - 对异步同步的 TaskScheduler 和 SynchronizationContext 感到困惑,无法控制同步上下文?

c# - 当我使用 VS 2010 SP1 Beta 打开一个新项目时,ASP.NET MVC 3 挂起

android - 如何在应用程序中创建语音 Activity ?

jquery - 如何从代码隐藏的页面方法更新 GridView?

c# - 使用动态数据进行自定义高级实体验证