【问题标题】:Dynamic Div with a table asp.net带表格的动态 Div asp.net
【发布时间】:2014-02-26 21:05:16
【问题描述】:

有没有办法将表格和行添加到动态创建的div 元素中?

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 时,它都会显示'table1' not declared

帮助!

【问题讨论】:

    标签: html asp.net vb.net


    【解决方案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)
    

    请记住,您需要在每次回发时重新创建所有动态创建的控件,并且最迟在 Page_Load 中使用与以前相同的 ID。

    【讨论】:

    • 但是我如何访问 table1 我必须向它添加动态行,例如 tr.Cells.Add(tc) table1.Rows.Add(tr)
    【解决方案2】:

    它不会因为您将 String 附加到动态创建的 div `。

    你的方法不正确试试这个方法。

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

    【讨论】:

      【解决方案3】:

      首先,您现有的 DIV 需要具有 runat=server 属性。然后你就可以从代码隐藏中调用它了

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

      在代码隐藏中调用该控件并使用 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

      【讨论】:

        猜你喜欢
        • 2011-04-22
        • 2011-07-25
        • 1970-01-01
        • 2013-12-11
        • 1970-01-01
        • 2016-05-31
        • 2011-11-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多