在page_init中动态创建控件并在click事件中访问

时间:2013-07-25 06:56:31

标签: c# asp.net vb.net

我在page_Init事件中创建了一个动态表。如何在Click事件处理程序中访问该表?目前,在单击事件处理程序中无法访问它。实际上我需要遍历动态创建的表,以便在该表中添加其他动态控件。

2 个答案:

答案 0 :(得分:0)

在您的页面中声明私有局部变量,例如_table As...

然后,在Page_Init中,使用这些变量_table = New...

您稍后可以在页面生命周期中使用_table

答案 1 :(得分:0)

您可以通过ID访问它,因此会分配一个唯一ID(在他的NamingContainer中)。

on aspx:

<asp:Panel id="TableContainer" 
     HorizontalAlign="Center" 
     runat="server">

   <!-- put your table(s) here -->

</asp:Panel>

protected void Page_Init(Object sender, EventArgs e)
{
   var table1 = new Table();
   table1.ID = "Table1";
   for(int rowCtr = 1; rowCtr <= 10; rowCtr++) {
      // Create new row and add it to the table.
      TableRow tRow = new TableRow();
      table1.Rows.Add(tRow);
      for (int cellCtr = 1; cellCtr <= 10; cellCtr++) {
         // Create a new cell and add it to the row.
         TableCell tCell = new TableCell();
         tCell.Text = "Row " + rowCtr + ", Cell " + cellCtr;
         tRow.Cells.Add(tCell);
      }
   }
   TableContainer.Controls.Add(table1);
}

然后您可以稍后在按钮单击事件中访问它:

protected void button1_Clicked(Object sender, EventArgs e)
{
    Table table1 = (Table) TableContainer.FindControl("Table1");
}

但是,您应该考虑使用像RepeaterGridView这样的webdatabound控件。