2011-02-28 10 views
1

アイテムテンプレートにFileUploadコントロールを含むASP.NETリピータコントロールがあります。 ASP.NET Repeaterは、ASP.NETマルチビューから作成されたウィザードの一部として、UpdatePanelの中​​にあります。送信をクリックすると、各FileUploadコントロールのすべてのファイルをアップロードしようとしていますが、FileUploadコントロールはフォームを送信するときにファイルを保持しません。ここでは、関連するコードされています。私は、Submitをクリックすると、私はすべてのFileUploadが自分のファイルをアップロードするファイルを制御しASP.NET RepeaterアイテムのFileUploadコントロールにすべてのファイルをアップロードする方法はありますか?

<asp:Repeater ID="RepeaterImages" runat="server" OnItemCommand="RepeaterBoxArts_ItemCommand"> 
    <ItemTemplate> 
    <tr> 
     <td class="right"> 
      Choose File: 
     </td> 
     <td> 
      <asp:FileUpload ID="FileUpload" runat="server" /> 
     </td> 
    </tr> 
    </ItemTemplate> 

foreach (RepeaterItem item in RepeaterImages.Items) 
    { 
     if (item.ItemType == ListItemType.Item 
      || item.ItemType == ListItemType.AlternatingItem) 
     { 
      FileUpload fupload = (FileUpload)item.FindControl("FileUpload"); 
      if (fupload.HasFile) 
      { 
       string path = Server.MapPath("~/images/"); 
       fupload.SaveAs(path); 

      } 
     } 
    } 

たい。ただし、ステップデバッガーを実行すると、各FileUploadコントロールにファイルがないことが示されます。ポストバックの問題だと思われますが、私は100%確実ではありません。

+0

こんにちは、リピーターをUpdatepanelで使用していますか? – Deepak

+0

私はこれを解決するために私のUpdatePanelを削除しましたが、可能であれば、私はUpdatePanelをよりスムーズなナビゲーションを提供するようにしておきたいと思います。 –

答えて

2

私は同じ問題を抱えていたし、このコードを追加解決

OnClientClick = "ジャバスクリプト:document.forms [0] = 'マルチパート/フォームデータを' .encoding;"

すべての画像をアップロードするボタンです。

この問題の答えは、私がhttps://stackoverflow.com/a/217722

は、以下の私のコードを参照してください、このリンクで見つける:分離コードでページでASPX

<asp:Repeater ID="rptUpload" runat="server" OnItemDataBound="rptUpload_ItemDataBound"> 
          <HeaderTemplate> 
           <table width="100%"> 
          </HeaderTemplate> 
          <ItemTemplate> 
           <tr> 
            <td> 
             <asp:FileUpload ID="fu" runat="server" /> 
            </td> 
           </tr> 
          </ItemTemplate> 
          <FooterTemplate> 
           </table> 
          </FooterTemplate> 
         </asp:Repeater> 

         <p> 
          <asp:ImageButton ID="btnUpload" runat="server" OnClick="btnUpload" ImageUrl="img/icon_upload.png" OnClientClick="javascript:document.forms[0].encoding = 'multipart/form-data';" /> 
         </p> 

protected void btnUpload_Click(object sender, ImageClickEventArgs e) 
    { 
     try 
     { 
      foreach (RepeaterItem item in rptUpload.Items) 
      { 
       if (item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem) 
       { 
        FileUpload fu = (FileUpload)item.FindControl("fu"); 
        if (fu.HasFile) 
        { 
         string path = Server.MapPath("~/images/"); 
         string fileName = Path.GetFileName(fu.FileName); 
         string fileExt = Path.GetExtension(fu.FileName).ToLower(); 
         fu.SaveAs(path + fileName + fileExt); 
        } 
       } 
      } 
     } 
     catch (Exception ex) 
     { 
      throw ex; 
     } 
    } 
関連する問題