题目写的很清楚。代码如下。        for (int i = 1; i <= this.ListBox1.Items.Count; i++)
        {
            Table autoTable = new Table();          //初始化表
            this.Page.Controls.Add(autoTable);
            autoTable.ID = i.ToString();            //
            autoTable.CssClass = "table";
            Response.Write(autoTable.ID);
        }这是动态添加多个表,并且设置了ID属性,便于后边findcontrol。                for (int i = ListBox1.Items.Count; i <= ListBox1.Items.Count; i++)
                { 
                    int indexItem = this.ListBox1.Items.IndexOf(this.ListBox1.Items.FindByText(last.GetValue(5).ToString()));
                    Table mytable = (Table)FindControl((indexItem + 1).ToString());
                    TableRow rows = new TableRow();
                    rows.Cells.Add(tCell);
                    mytable.Rows.Add(rows);
                    Response.Write(mytable.ID);                }这是后边找到这个控件并且赋值添加cell和rows的。但是提示未将对象引用到实例。跟踪单步之后发现。
mytable值为NULL,也就是未找到控件。但是为什么不报错呢?还有运行之后竟然把值都加到一个表里边了。我生成的三个表只有一个用上了。

解决方案 »

  1.   

        首先说下我不是来帮忙的,只是给你提点意见。ASP.NET实际开发中,对于在后台动态向前台页面输出控件以供显示,如果在你接下来的代码中需要调用新添加的控件时,runat='server'属性是必不可少的。你上面写的FindControl()方法在后台,要获取的前台控件必须拥有runat='server'属性才可以。
        如有不对,仅供参考,轻喷。
      

  2.   


    我不会喷你的。都是来帮忙的。不管解决没解决。
    我以前有个动态添加的是Label,但是不用添加runat属性在后台就能直接findcontrol并且能改变它的属性。
      

  3.   


    如果我动态添加和查找是在一个事件内进行的呢?比如一个button_click事件内写的?
      

  4.   

    好了,现在是直接提示报错。findcontrol返回值为NULL ,无法将对象引用到实例。
      

  5.   

    那应该可以啊,检查FindControl的ID参数是否正确。
      

  6.   

    我写最简单的代码:
    for (int i = 0; i < 3; i++)
    {
    Table table = new Table();
    table.ID = i.ToString();
    this.Controls.Add(table);
    }
    for (int i = 0; i < 3; i++)
    Response.Write(this.FindControl(i.ToString()).ID + "<br/>");
    没发现什么问题啊,能找到table。
      

  7.   

    参考:
    http://www.cnblogs.com/insus/archive/2011/12/01/2270455.htmlhttp://www.cnblogs.com/insus/archive/2012/10/29/2744769.html
      

  8.   

     for (int i = ListBox1.Items.Count; i <= ListBox1.Items.Count; i++)这个循环只会循环一次,所以你说的“mytable值为NULL,也就是未找到控件。但是为什么不报错呢?”以及“我生成的三个表只有一个用上了。 ” 是不是这个循环的问题。