ModalPopup上的AsyncPostBack FileUpload

时间:2011-03-28 19:58:15

标签: asp.net updatepanel modalpopupextender

我正在使用UpdatePanel,我的提交按钮是触发器之一以及清除按钮。但问题是我在div中有一个FileUpload控件。这是一个模态弹出窗口,因此它显示一个表单供用户上传一个小音符。当我尝试使用AsyncPostBackTrigger上传文件时,它什么也没做(我已经读过)。我的问题是如何不使用PostBackTrigger,因为我想使用asyncpostbacktrigger,因为如果发生错误,则Modal弹出窗口关闭,用户不知道文件是否已上传。我该怎么办?

代码:

<asp:Panel ID="addnotepanel" runat="server" style="/*display:none;*/" CssClass="addnotepanel">
<asp:UpdatePanel ID="UpdatePanel1" runat="server"><ContentTemplate>
            <asp:FileUpload ID="FileUpload1" runat="server" />
        &nbsp;<br />
        </ContentTemplate>
        <Triggers>
                <asp:AsyncPostBackTrigger ControlID="ClrBtn" />
                <asp:PostBackTrigger ControlID="SubmitBtn" />
                </Triggers>
            </asp:UpdatePanel>
                    File:

            <br />
            <asp:Label ID="ErrorLabel" runat="server" Visible="False"></asp:Label>
            <br />
            <asp:Button ID="Submitbtn" runat="server" Text="Submit" 
                onclick="Submitbtn_Click" />
&nbsp;<asp:Button ID="CnlBtn" runat="server" Text="Cancel" onclick="CnlBtn_Click" />
            &nbsp;<asp:Button ID="ClrBtn" runat="server" onclick="ClrBtn_Click" 
                Text="Clear" />
&nbsp; </div></asp:Panel>

1 个答案:

答案 0 :(得分:0)

将SubmitBtn保留为PostBackTrigger,但不要将其设置为modalpopupextender的“OkControlID”。

在Submitbtn_Click服务器端sub中

,如果上传完成,则调用 yourModalpopupextenderID .hide(),这样只有在没有错误时,Modal弹出才会关闭。

您可以使用AjaxControlToolkit中的AsyncFileUpload 这里,作为一个例子来说明如何使用它:

 <AjaxControlToolkit:AsyncFileUpload ID="AttachementsFileUpload" 
                                                    runat="server" 
                                                    OnUploadedComplete="AttachementsFileUpload_UploadedComplete"
                                                    OnClientUploadComplete="uploadComplete" />



<script type="text/javascript">
         var UpdateAttachementsGridViewButton = '<%= UpdateAttachementsGridViewButton.ClientID %>';
         function uploadComplete(sender, args) {
             $get(UpdateAttachementsGridViewButton).click();  

         }   
    </script>

如您所见,上传完成后,我使用Javascript触发隐藏按钮的点击。同时我使用以下内容检索AttachementsFileUpload_UploadedComplete中的文件:

Dim AttachementsFileUpload As AjaxControlToolkit.AsyncFileUpload = AnnouncementFormView.FindControl("AttachementsFileUpload")
    Attachements.add(e.filename, AttachementsFileUpload.FileBytes)

这是我在我的情况下使用它的方式,但你会发现很多关于它如何工作的例子