2014-02-26 19 views
0

有沒有辦法將和行添加到動態創建的div元素?動態Div與表asp.net

Dim divTable As New HtmlGenericControl("div") 
    divTable.ID = "divTable" 
    divTable.Attributes("class") = "printtable" 
    divTable.InnerHtml = "<asp:Table ID=""table1"" CellPadding=""1"" runat=""server""> </asp:Table>" 
    divPlaceHolder.Controls.Add(divTable) 

我需要動態行添加到table1但很明顯,每當我試圖從它說'table1' not declared代碼文件訪問table1

幫助!

回答

1

你爲什麼不加入Panel(其呈現爲div)到PlaceHolder或只使用一個單獨Panel集裝箱?您必須將Table作爲服務器控制實例添加到該面板。

Dim divTable As New Panel() 
divTable.ID = "divTable" 
divTable.CssClass = "printtable" 
divPlaceHolder.Controls.Add(divTable) ' the placeholder is redundant with a panel ' 
Dim table As New Table() 
table.ID = "table1" 
table.CellPadding = 1 
divTable.Controls.Add(table) 

你可以找到並通過FindControl訪問該表:

Dim divTable As Panel = DirectCast(divPlaceHolder.Controls(0), Panel) 
Dim table As Table = DirectCast(divTable.Controls(0), Table) 

記住,您需要重新創建所有動態創建的控件上的每個回發具有相同ID爲Page_Load最遲之前的。

+0

,但我我怎麼可以訪問表必須動態行添加到它,就像tr.Cells.Add(TC)table1.Rows.Add(TR) –

+0

@MohsinMushtaq:我編輯我的答案。 –

0

它不會像您爲動態創建的div`追加String一樣。

你的評價是不正確的嘗試這種方式。

Table table1= new Table(); 
TableRow row = new TableRow(); 
TableCell cell1 = new TableCell(); 
cell1.Text = "blah blah blah"; 
row.Cells.Add(cell1); 
table1.Rows.Add(row); 
0

首先您現有的DIV需要runat = server屬性。然後你可以從代碼隱藏中調用它

<div id="divRunServer" runat="server"></div> 

在codebehind中調用該控件並使用Table web ui控件創建動態html元素。

//prepare dynamic table 
     Table Table1 = new Table(); 

     int numrows = 3; 
     int numcells = 2; 
     for (int j = 0; j < numrows; j++) 
     {   
      TableRow r = new TableRow(); 
      for (int i = 0; i < numcells; i++) { 
       TableCell c = new TableCell(); 
       c.Controls.Add(new LiteralControl("row " 
        + j.ToString() + ", cell " + i.ToString())); 
       r.Cells.Add(c); 
      } 
      Table1.Rows.Add(r); 
     } 

//add to div 

     divRunServer.Controls.Add(Table1) 

Referred from