我不知道为什么在OnUploadedComplete
内调用另一个函数不能正常工作,这是我的代码:
ASP.NET代码:
<asp:AsyncFileUpload ID="AsyncFileUpload1" runat="server"
OnUploadedComplete ="UploadFile1"
OnClientUploadComplete="uploadComplete" ThrobberID="myThrobber"
onclientuploaderror="uploadError" CompleteBackColor="White" />
VB.NET代码:
Protected Sub UploadFile1(ByVal sender As Object, ByVal e As System.EventArgs)
'saveing file on disk, this part works fine, but calling
'myfunction() does not work properly
myfunction()
End Sub
Sub myfunction()
mylabel.Text="done" 'this does not work
insert_records_to_db() 'this works
End Sub
答案 0 :(得分:4)
这是因为AsyncFileUpload-Control在IFrame中呈现(通常由于安全原因,FileUpload只能在完全回发时使用),因此它没有UpdatePanels的正常行为。
您可以通过处理客户端OnClientUploadComplete
来触发它,以触发导致异步回发的隐藏按钮。
OnClientUploadComplete="uploadComplete"
function uploadComplete() {
$get("<%=btnShowUploadResult.ClientID %>").click();
}
<asp:Button ID="btnShowUploadResult" runat="server" CausesValidation="false" Text="hidden" Style="display: none" />
您可以将邮件存储在服务器端OnUploadedComplete
中的Session变量中,并在btnShowUploadResult.Click
处理程序中读取它。
答案 1 :(得分:1)
我认为这是由于AsyncFileUpload控件的工作原理,请参阅this以获取更多信息。
难道你不能只使用客户端javascript函数来更改标签文本吗?