2010-11-21 125 views
0

我在我的asp.net页面上有表,并且想要插入新的行。我尝试添加每个点击按钮的新行,其中包含带有FileUpload的单元,但它起作用只有第一次。当我下次点击时,在我的代码后面。在代码中添加新行代码

<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> 

这是按钮的代码单击

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); 
} 

但问题是,始终是2。任何人可以帮助?

回答

1

当谈到动态控件时,您需要在每个回贴中添加它们。

您单击事件处理程序只添加最新的文件,并且您不保存以前的任何地方。您应该将它们添加到ViewState并查询ViewState以检索它们。

请参阅this article有关ViewState的详细说明。