private void dl_blank_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
{
PlaceHolder ph=new PlaceHolder();
ph=(PlaceHolder)e.Item.FindControl("PlaceHolder2"); TextBox tba=new TextBox();
tba.Columns=100;
tba.BorderStyle=BorderStyle.None;
tba.TextMode=TextBoxMode.SingleLine;
ph.Controls.Add(tba);   //此行报错:未将对象引用设置到对象的实例
}
我这段代码错在什么地方啊?
为什么总是提示:“行 103: ph.Controls.Add(tba);”未将对象引用设置到对象的实例呢?

解决方案 »

  1.   

    ph=(PlaceHolder)e.Item.FindControl("PlaceHolder2");
    if (ph == null)
    {
       Response.Write("Something is wrong here");
       return;
    }
      

  2.   

    我加了if判断以后的结果:首先输出四个"wrong",然后就是我想要的结果了。
    为什么会这样呢,这个ItemDataBound事件是如何运行的啊?从我得到的页面结果来看ItemDataBound事件一共运行的8次,前四次的输出是"wrong",后四次就是生成的我想要的结果。下面是数据邦定的代码和事件代码:
    public void BindList()//数据邦定代码
    {
    SqlConnection conn=new SqlConnection("server=(local);uid=sa;pwd=10100313;database=Netexam");
    string commstr="select top 10 QTitle,Bnum from Blank";
    SqlDataAdapter da=new SqlDataAdapter(commstr,conn);
    DataSet ds=new DataSet();

    conn.Open();
    da.Fill(ds,"blank");
    conn.Close();

    this.dl_blank.DataSource=ds.Tables["blank"].DefaultView;
    this.dl_blank.DataBind();
    }private void dl_blank_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
    {
    PlaceHolder ph=new PlaceHolder();
    ph=(PlaceHolder)e.Item.FindControl("PlaceHolder2"); TextBox tba=new TextBox(); if (tba!=null && ph!=null)
    {
    tba.ID="tba";
    tba.Columns=100;
    tba.BorderStyle=BorderStyle.None;
    tba.TextMode=TextBoxMode.SingleLine; ph.Controls.Add(tba);
    }
    else
    {
    Response.Write("wrong");
    }

    }
    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    BindList();

    }
      

  3.   

    private void dl_blank_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
    {
      if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
      {
       //your stuffs
      }
    }