2011-12-05 109 views
0

這不僅僅是另一個FileUpload + UpdatePanel問題。FileUpload + UpdatePanel在第一次點擊時不起作用

我有,如許多類似的帖子所述,我的表單上有一個UpdatePanel和一個FileUpload控件。我還爲我的上傳按鈕設置了PostBackTrigger。 它的工作原理。抓住它是從來沒有在第一次點擊工作。那就是:

我點擊瀏覽,選擇我的文件,按上傳。沒有任何反應(fupld.HasFile = false);

我再次點擊瀏覽,選擇任何文件(相同或另一個),按上傳,它工作正常。

<asp:UpdatePanel ID="upGeneral" runat="server" > 
    <ContentTemplate> 
     ... 
     <table id="tabPage10" runat="server" visible="false" width="100%" > 
      <tr> 
       ... 
       <td> 
        <asp:FileUpload ID="fupld" runat="server" Width="80%" /> 
        <asp:ImageButton ID="ibtnUpld" runat="server" onclick="ibtnUpld_Click" /> 
       <td> 
       ... 
      <tr> 
     ... 
    </ContentTemplate> 
    <Triggers> 
     <asp:PostBackTrigger ControlID="ibtnUpld" /> 
    </Triggers> 
</asp:UpdatePanel> 

我環顧四周尋找答案,但這是一些非常奇怪的行爲。到目前爲止沒有運氣。

任何想法?

感謝

+1

發佈您的代碼。 –

回答

4

好,FileUpload控件設計爲僅在回發的情況,而不是在部分頁面呈現在異步回方案中使用。

http://msdn.microsoft.com/en-us/ysf0192b#using_the_FileUpload_Control_with_the_UpdatePanel_control

你可以從AjaxControlToolkit使用AsyncFileUpload控制來代替。

<asp:AsyncFileUpload runat="server" ID="asyncFileUpload" Width="400px" ThrobberID="imageThrobber" 
    OnClientUploadStarted="uploadStarted" OnClientUploadError="uploadError" 
    ClientIDMode="AutoID" PersistFile="true" PersistedStoreType="Session" /> 

後面的代碼:

 if (asyncFileUpload.HasFile) 
    { 
     string fullPath = GetPath(asyncFileUpload.FileName); 
     asyncFileUpload.SaveAs(fullPath); 
    } 

我從來沒有與它的任何問題。

0

變化

Visible ="false" 

style="display:none" 

,並從代碼變化背後。如果設置Visible =「false」,則控件實際上不會呈現爲HTML。
要將其呈現爲HTML,請使用style =「display:none」而不是Visible =「false」

相關問題