我使用ajaxtoolkit AsyncFileUpload,我想显示上传文件的列表,最后一个错误并处理转发器itemCommand以删除上传的文件。
<asp:AsyncFileUpload ID="uploader1"
runat="server"
OnUploadedComplete="AsyncFileUpload1_UploadComplete"
OnClientUploadError="uploadError"
OnClientUploadStarted="StartUpload"
OnClientUploadComplete="UploadComplete"
CompleteBackColor="Lime"
UploaderStyle="Modern"
ErrorBackColor="Red"
UploadingBackColor="#66CCFF"
ClientIDMode="AutoID"
EnableViewState="true" />
<asp:UpdatePanel runat="server">
<ContentTemplate>
<asp:Label ID="lblError" runat="server" ForeColor="Red" Visible="false" />
<asp:Repeater ID="rptAttachments"
runat="server"
OnItemCommand="Uploader_ItemCommand">
<ItemTemplate>
<a href='#'><%#Eval("Filename") %></a>
<asp:LinkButton ID="lnkDelete"
runat="server" Text="Удалить"
CommandName="DeleteAttachment"
CommandArgument='<%#Eval("FileName") %>'
/>
</ItemTemplate>
</asp:Repeater>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="uploader1" EventName="UploadedComplete" />
</Triggers>
</asp:UpdatePanel>
void AsyncFileUpload1_UploadComplete(object sender, AsyncFileUploadEventArgs e)
{
if (e.state == AsyncFileUploadState.Success)
{
if (!Facade.Attachment.UploadAttachment(attachment))
ShowErrorMessage("File already exists");
else
BindAttachments();
}
}
void BindAttachments()
{
rptAttachments.DataSource = Facade.Attachment.GetAttachments(AttachmentId2);
rptAttachments.DataBind();
}
事件AsyncFileUpload1_UploadComplete导致,但没有任何反应。
答案 0 :(得分:2)
问题是OnUploadedComplete
事件是异步的,您无法在页面中进行任何更改。我有such problem later,你可以看到,没有答案......
我找到了一个解决方法。我在服务器处理程序cookie中设置了我需要的信息,然后在客户端函数中读取它并执行适当的操作
例如,您可以尝试在客户端获取cookie后,将请求发送到刷新页面。