在AsyncFileUpload上传完成后启用按钮

4
这是场景:我有一个页面,上面有一个AsyncFileUpload和一个按钮。现在的问题是,如果用户在文件上传完成之前点击按钮,就会弹出错误。因此,我想实现的是,在页面加载时禁用按钮,一旦文件上传完成,就要再次使按钮可见。现在,我已经在网上查找了问题和解决方案,我能够得出的结论是,按钮在服务器端处理,所以我不能使用JavaScript来实现这一点。因此,当我在屏幕的代码后台执行它时,它成功地禁用了按钮,但在文件上传完成后并没有成功启用它。我假设的前提是因为没有发生回发,屏幕没有刷新,因此按钮似乎没有启用。

我该如何解决这个问题?如何在文件上传完成后启用按钮?

到目前为止,这里只有很少的代码,但是这是它:

BulkInsert.aspx
  <%@ Page AspCompat="true" Title="MainPage" MasterPageFile="~/MasterPage.master"       Language="C#"
AutoEventWireup="true" CodeFile="InventoryBulkInsert.aspx.cs" Inherits="content_inventory_InventoryBulkInsert" %>

  <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>

 <asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">

<table border="0" class="tablebody" width="100%">
   <tr>
        <td class="title" colspan="2">
            Bulk insert
        </td>
    </tr>

    <tr>
        <td class="headercell" colspan="2">
            File Upload
        </td>
    </tr>




    <tr>
        <td class="style1">
            File
        </td>
        <td class="style2" style="height: 26px">
            <asp:AsyncFileUpload ID="AsyncUpload" runat="server" OnUploadedComplete="AsyncUpload_UploadedComplete"
                OnClientUploadComplete="UploadComplete" OnUploadedFileError="AsyncUpload_UploadedFileError"
                colspan="1" />
        </td>
    </tr>
    <tr>
        <td class="style1">
        </td>
        <td align="left">
            <asp:Button runat="server" ID="btnImport" Text="Import" BackColor="#990000" ForeColor="White"
                nowrap Width="214px" OnClick="btnImport_Click"  />
        </td>
    </tr>

BulkInsert.aspx.cs

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        this.btnImport.Enabled = false;

    }
  }


 protected void AsyncUpload_UploadedComplete(object sender,    AjaxControlToolkit.AsyncFileUploadEventArgs e)
 {
    this.btnImport.Enabled = true;
 }
1个回答

2
我建议仅使用JavaScript来显示按钮,而不在处理中使用它。您可以使用已包含在设计中的AjaxFileUpload OnClientUploadComplete="UploadComplete",它可以完美地实现您的目标。
在标记中创建以下函数:
   function UploadComplete(sender, args) {
       var control = document.getElementById("<%=btnImport.ClientID%>");
       control.style.display = "block";

   }
</script>

然后修改你的按钮,将style="display:none"添加进去


那部分代码是做什么的? control.style.display = "block"; - Ruaan Volschenk
这将使按钮可见 :) - jack
你非常受欢迎 :) 你也可以使用 control.style.display = "inline"; 来显示按钮在同一位置。 - jack

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接