2010-11-21 24 views
0

Asp.net sayfamda bir tablom var ve yeni satırlar eklemek istiyorum. FileUpload ile hücreyi içeren yeni satırdaki her yeni düğmeye eklemeye çalışıyorum ama işe yarıyor sadece ilk kez. Bir dahaki sefere tıkladığımda, tablomun arkasındaki tablomda.Sorunun ardındaki kodda tablodaki yeni satır ekle

<asp:Panel ID="pnlImages" runat="server" BackColor="Gray" Height="500"> 
     <table id="tblImages" runat="server" width="100%"> 
     <tr> 
      <td> 
      <asp:FileUpload ID="FileUpload1" runat="server" /> 
      </td> 
     </tr> 
     <tr> 
      <td align="right" width="100"> 
      <asp:ImageButton ID="imbAddImage" runat="server" ImageUrl="images/plus.png" 
        Width="48" Height="48" OnClick="imbAddImage_Click"/> 
     </td> 
     </tr> 
    </table> 
</asp:Panel> 

Bu butona kod

protected void imbAddImage_Click(object sender, ImageClickEventArgs e) 
{ 
    System.Web.UI.HtmlControls.HtmlTable tbl = (System.Web.UI.HtmlControls.HtmlTable)this.FindControl("tblImages"); 
    System.Web.UI.HtmlControls.HtmlTableRow row = new System.Web.UI.HtmlControls.HtmlTableRow(); 
    System.Web.UI.HtmlControls.HtmlTableCell cell = new System.Web.UI.HtmlControls.HtmlTableCell(); 
    FileUpload temp = new FileUpload(); 
    cell.Controls.Add(temp); 
    row.Controls.Add(cell); ; 
    int a=tbl.Controls.Count; 
    tbl.Controls.AddAt(a-1, row); 
} 

tıklayın edilir Ama sorun bir kimse 2. yardımcı olabilir her zaman olduğudur?

cevap

1

Dinamik denetimler söz konusu olduğunda, bunları her postaya eklemeniz gerekir.

Olay işleyicisini tıklatırsanız en yeni dosyayı eklersiniz ve öncekileri hiçbir yere kaydetmezsiniz. Onları ViewState'a eklemeli ve bunları almak için ViewState'ı sorgulamanız gerekir.

Bkz. this article ViewState'in ayrıntılı açıklaması için.