2011-12-05 8 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); 
    } 

私はそれで何か問題があったことがありません。

style="display:none" 

0

変更

Visible ="false" 

と背後にあるコードからそれを変更します。あなたが目に見える設定した場合
=「falseを、コントロールが実際にHTMLとしてレンダリングされていない
をするために、HTML、使用スタイル=としてそれをレンダリング。 『表示:なし』の代わりに可視=」false」を