0

我有一個TabContainer其中每個選項卡有一個ModalPopupExtender。在每個ModalPopupExtender裏面,我定義了一個AsyncFileUploadAsyncFileUpload裏面的ModalPopupExtender裏面TabContainer

我的目標是,當文件上傳/失敗時,它會在ModalPopupExtender內顯示一個標籤,顯示此事實。另外,我想更新相應的TabPanel以及有關上傳文件的信息(在關閉ModalPopupExtender之前或之後,對我來說也是如此)。

我認爲問題是在ContentTemplateTabPanel內部有ModalPopupExtender,但我沒有找到解決方案。

我的標記代碼:

<AjaxControlToolkit:TabPanel ID="tBrochure" runat="server" HeaderText="Brochure" OnDemandMode="Always" EnableViewState="true"> 
    <ContentTemplate> 
    <asp:Label ID="lBrochureDesc" runat="server" Text="In this tab you can set or update the brochure document and its description for the Maintenance Contracts product." /><br /><br /> 

    <asp:Label ID="lBrochureCurrentFile" runat="server" Text="Current File" CssClass="LabelForTextBox" />:&nbsp; 
    <asp:Label ID="lBrochureCurrentFileName" runat="server" Text="" /><br /> 

    <asp:Label ID="lBrochureCurrentDateTag" runat="server" Text="Upload Date" CssClass="LabelForTextBox" />:&nbsp; 
    <asp:Label ID="lBrochureCurrentDate" runat="server" Text="" /><br /><br /> 

    <asp:Panel ID="pBrochureUploadFileLink" runat="server" style="margin-left: 20px;"> 
     <asp:ImageButton ID="ibBrochureUploadFile" runat="server" ImageUrl="~/Images/icon_add.png" Width="20px" style="vertical-align: middle" /> 
     <asp:Label ID="lBrochureUploadFile" runat="server" Text="Upload a new document" style="vertical-align: middle" /><br /> 
    </asp:Panel> 

    <asp:Panel ID="pBrochureUploadFilePopup" runat="server" CssClass="Popup" style="display:none;"> 
     <asp:Panel ID="pBrochureUploadFilePopupTitleBar" runat="server" CssClass="PopupTitleBar"> 
     <asp:ImageButton ID="imBrochureUploadFilePopupClose" runat="server" ImageUrl="~/Images/icon_close.png" /> 
     </asp:Panel> 
     <asp:Panel ID="pBrochureUploadFilePopupContent" runat="server" CssClass="PopupContent"> 
     <asp:Label ID="lBrochureUploadFilePopupTitle" runat="server" CssClass="title" Text="Upload a new file" /> 
     <AjaxControlToolkit:AsyncFileUpload ID="fuBrochure" runat="server" CompleteBackColor="Green" ErrorBackColor="Red" /><br /><br /> 
     <asp:Label ID="lBrochureUploadFileStatus" runat="server" Text="" /> 
     <asp:Label ID="lBrochureUploadFileAdvice" runat="server" Text="The current file will be replaced but a backup of that version will be stored." /> 
     </asp:Panel> 
    </asp:Panel> 
    <asp:Button ID="bBrochureDummy" runat="server" style="display:none;" /> 
    <AjaxControlToolkit:ModalPopupExtender ID="mpeBrochureUpload" runat="server" ClientIDMode="Static" 
              TargetControlID="pBrochureUploadFileLink" 
              PopupControlID="pBrochureUploadFilePopup" 
              CancelControlID="imBrochureUploadFilePopupClose" 
              PopupDragHandleControlID="pBrochureUploadFilePopupTitleBar" 
              BackgroundCssClass="PopupBackground" DropShadow="true" /> 


    <br /><br /> 

    <asp:Label ID="lBrochureDescription" runat="server" Text="Description" CssClass="LabelForTextBox" />:<br /> 
    <asp:TextBox ID="tbBrochureDescription" runat="server" TextMode="MultiLine" CssClass="TextBox" Style="height:50px; width:200px; max-width: 900px;"/><br /><br /> 
    <asp:LinkButton ID="lbBrochureSave" runat="server" Text="Save" CssClass="ButtonWithArrow" /> 
    <asp:LinkButton ID="lbBrochureCancel" runat="server" Text="Cancel" CssClass="ButtonWithArrow" /> 
    </ContentTemplate> 
</AjaxControlToolkit:TabPanel> 

我隱藏:

Protected Sub fuBrochure_UploadedComplete(ByVal sender As Object, ByVal e As AjaxControlToolkit.AsyncFileUploadEventArgs) Handles fuBrochure.UploadedComplete 
    If fuBrochure.HasFile Then 
     Dim fileName As String = fuBrochure.FileName 
     Dim fileType As String = fuBrochure.ContentType 
     If Products.updateDoc(productId, Products.DocumentId.Brochure, fileName, fileType) Then 
      fuBrochure.SaveAs(MapPath(path + fileName)) 
     End If 
     UpdateBrochurePanel() 
     lBrochureUploadFileStatus.Text = "File uploaded succesfully!" 
     mpeBrochureUpload.Hide() 
    End If 
End Sub 

Protected Sub fuBrochure_UploadedFileError(ByVal sender As Object, ByVal e As AjaxControlToolkit.AsyncFileUploadEventArgs) Handles fuBrochure.UploadedFileError 
    lBrochureUploadFileStatus.Text = "Error!" 
End Sub 

在這段代碼,該行:

lBrochureUploadFileStatus.Text = "File uploaded succesfully!" 
mpeBrochureUpload.Hide() 

沒有做任何事情,但行

fuBrochure.SaveAs(MapPath(path + fileName)) 

工作正常。

謝謝!

回答

1

AsyncFileUpload控件使用iframe將其文件發佈到服務器。這意味着,上傳文件時,頁面上沒有任何內容被回傳。這就是原因,您的標籤將不會被更新

ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "size", "top.$get(\"" + lBrochureUploadFileStatus.ClientID + "\").innerHTML = 'File uploaded succesfully!';", true); 

,你可以在這裏找到http://technico.qnownow.com/using-asyncfileupload-control-in-asp-net-ajax/

一個簡單的例子,這不是正是你所尋找的東西,但它應該幫助。希望能幫助到你。

+0

謝謝!它看起來非常有幫助。 – adripanico