动态控制空参考错误

本文关键字:错误 参考 动态控制 | 更新日期: 2023-09-27 18:10:13

我正在尝试创建由数据库字段确定的动态控件,当控件实际出现时,它们抛出空引用错误。

在这段代码的最后一行抛出错误。我可以看到数组被实例化为类型textbox,但是[0]位置(以及所有后续)都是空的。我错过了什么?

  var query = from a in com.Communications 
                    where a.fddkey == res.FDDKey
                    select a;
        var querydd = from b in com.Communications
                      select b.subject;
        int maxrows = query.Count();
        TextBox[] notestb = new TextBox[maxrows * 2];
        DropDownList[] notesdd = new DropDownList[maxrows];
        int i = 0;
        foreach (var s in query)
        {
            TableRow tr = new TableRow();
            tr.Cells.Add(new TableCell());
            tr.Cells.Add(new TableCell());
            tr.Cells[0].Text = "Date:";
            tr.Cells[1].Text = "Correspondent:";
            this.tblnotes.Rows.Add(tr);
            TableRow tr2 = new TableRow(); // Not sure if new row needs to  be instantiated or not.
            tr2.Cells.Add(new TableCell());
            tr2.Cells.Add(new TableCell());
            notestb[i].ID = "notestb" + i.ToString();

动态控制空参考错误

数组notestb本身不是null,但是您没有在其中实例化任何元素,这就是为什么它们都是null的原因。

notestb[i] = new TextBox();
notestb[i].ID = "notestb" + i.ToString();

您没有实例化notestb元素:

TextBox[] notestb = new TextBox[maxrows * 2];
foreach(var t in notestb )
   t = new TextBox();