这是一个场景:我的屏幕上有一个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;
}
答案 0 :(得分:2)
我建议仅使用javascript来显示按钮,你不会在处理过程中使用它。您可以使用已包含在设计中的AjaxFileUpload OnClientUploadComplete="UploadComplete"
,它将完美地实现您的目标。
在标记中创建如下函数:
function UploadComplete(sender, args) {
var control = document.getElementById("<%=btnImport.ClientID%>");
control.style.display = "block";
}
</script>
然后修改按钮以使style="display:none"