对象引用未设置为对象异常的实例

时间:2012-01-17 09:36:03

标签: asp.net

我的网页中有一个ID:Panel2的面板,我正在将adynamic表添加到其中。

我收到"Object reference not set to an instance of an object"例外。

我的代码:

            for (int i = 0; i <= val; i++)
            {
                Table Table4 = new Table();
                TableHeaderRow thr = new TableHeaderRow();
                TableHeaderCell thc2 = new TableHeaderCell();
                thc2.BorderColor = Color.Black;
                thc2.BorderWidth = 2;
                TableHeaderCell thc3 = new TableHeaderCell();
                thc3.BorderColor = Color.Black;
                thc3.BorderWidth = 2;
                TableHeaderCell thc4 = new TableHeaderCell();
                thc4.BorderColor = Color.Black;
                thc4.BorderWidth = 2;
                TableHeaderCell thc5 = new TableHeaderCell();
                thc5.BorderColor = Color.Black;
                thc5.BorderWidth = 2;

                Label l2 = new Label();
                l2.Text = "Check Point";
                l2.ForeColor = Color.Black;
                Label l3 = new Label();
                l3.Text = "Applicability";
                l3.ForeColor = Color.Black;

                Label l4 = new Label();
                l4.Text = "Effectiveness";
                l4.ForeColor = Color.Black;
                Label l5 = new Label();
                l5.Text = "Score";
                l5.ForeColor = Color.Black;

                thc2.Controls.Add(l2);
                thc3.Controls.Add(l3);
                thc4.Controls.Add(l4);
                thc5.Controls.Add(l5);
                thr.Cells.Add(thc2);
                thr.Cells.Add(thc3);
                thr.Cells.Add(thc4);
                thr.Cells.Add(thc5);
                Table4.Rows.Add(thr);
                TableRow tr = new TableRow();
                tr.BorderColor = Color.Black;
                tr.BorderWidth = 2;


                TableCell c2 = new TableCell();
                c2.BorderColor = Color.Black;
                c2.BorderWidth = 2;
                c2.Text = Convert.ToString(s[i]);
                TableCell c3 = new TableCell();
                c3.BorderColor = Color.Black;
                c3.BorderWidth = 2;
                TableCell c4 = new TableCell();
                c4.BorderColor = Color.Black;
                c4.BorderWidth = 2;

                TableCell c5 = new TableCell();
                c5.BorderColor = Color.Black;
                c5.BorderWidth = 2;

                DropDownList ddl1 = new DropDownList();
                ddl1.Items.AddRange(items2);
                ddl1.ID = "ddl1" + i;

                DropDownList ddl2 = new DropDownList();
                ddl2.Items.AddRange(items1);
                ddl2.ID = "ddl2" + i;
                TextBox t4=new TextBox();
                t4.ID = "textID4" + i;
                t4.EnableViewState = true;

                c2.ID = "newC2" + i;
                c3.ID = "newC3" + i;
                c4.ID = "newC4" + i;
                c5.ID = "newC5" + i;
                tr.ID = "newRow" + i;

                c3.Controls.Add(ddl1);
                c4.Controls.Add(ddl2);
                c5.Controls.Add(t4);

                tr.Cells.Add(c2);
                tr.Cells.Add(c3);
                tr.Cells.Add(c4);
                tr.Cells.Add(c5);
                Table4.Rows.Add(tr);

     ----->           this.Panel2.Controls.Add(Table4);

                Session["table"] = Table4;

            }

在第(行.Panel2.Controls.Add(表4)),我正在

  

对象引用未设置为对象异常的实例。

即使我在设计页面中创建了一个Panel,我也收到了错误

这里任何表都是动态添加的,而不是Panel,Panel是静态创建的,我在其中插入动态表。

1 个答案:

答案 0 :(得分:3)

有几个原因会发生这种情况,但最重要的是:

  

绝对确定您已使用完全ID 创建了一个控件   将 runat属性设置为“server”

这适用于Panel2和Table4。

除此之外,你需要检查这些事情:

  • 您的类(发生异常的地方)继承自System.UI.Page
  • @Page CodeBehind属性设置为您的类(拼写,大小写)
  • 您在page lifecycle期间(即在初始化之前)的正确时间引用了该对象。
  • 使用前没有修改参考的地方