2016-08-10 84 views
0

我有两个问题:对象引用不设置到对象asp.net的实例,

  1. 我如何可以使用其他方式的文本框,以便它不会引发任何错误?
  2. 我得到了一个错误:未设置为一个对象的实例

    “对象引用

,我不知道如何解决它 请能有人拿。一看?

protected void DataGridView1_RowCommand(object sender, GridViewCommandEventArgs e) 
    { 

     if (e.CommandName.Equals("InsertFooter")) 
     { 


      try 
      { 

       System.Web.UI.WebControls.TextBox txtEmp_num = (System.Web.UI.WebControls.TextBox)DataGridView1.Controls[0].Controls[0].FindControl("txtEmp_num"); 
       System.Web.UI.WebControls.TextBox txtEmp_fn = (System.Web.UI.WebControls.TextBox)DataGridView1.Controls[0].Controls[0].FindControl("txtEmp_fn"); 
       System.Web.UI.WebControls.TextBox txtEmp_ln = (System.Web.UI.WebControls.TextBox)DataGridView1.Controls[0].Controls[0].FindControl("txtEmp_ln"); 
       System.Web.UI.WebControls.TextBox txtEmp_phone = (System.Web.UI.WebControls.TextBox)DataGridView1.Controls[0].Controls[0].FindControl("txtEmp_phone"); 
       System.Web.UI.WebControls.TextBox txtEmp_email = (System.Web.UI.WebControls.TextBox)DataGridView1.Controls[0].Controls[0].FindControl("txtEmp_email"); 

       MySqlConnection conn = new MySqlConnection(connection); 
       MySqlCommand cmd = new MySqlCommand(); 
       cmd.Connection = conn; 
       cmd.CommandText = "insert into employees(Emp_number,First_name,Last_name,Phone_num,Email) values(@1,@2,@3,@4,@5)"; 



       cmd.Parameters.AddWithValue("@1", txtEmp_num.Text); 
       cmd.Parameters.AddWithValue("@2", txtEmp_fn.Text); 
       cmd.Parameters.AddWithValue("@3", txtEmp_ln.Text); 
       cmd.Parameters.AddWithValue("@4", txtEmp_phone.Text); 
       cmd.Parameters.AddWithValue("@5", txtEmp_email.Text); 
       conn.Open(); 
       cmd.ExecuteNonQuery(); 

       conn.Close(); 
       Bind(); 


      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 
     } 

    } 
+0

尝试'调试'代码,看看哪个控件是'null' .. – mmushtaq

+1

请参阅http://stackoverflow.com/a/4660186/5836671 – VDWWD

回答

0

Object reference not set to an instance of an object意味着你正在尝试ge t属性/调用某种方法是null

这意味着-at您的变量的最不为null:txtEmp_numtxtEmp_fntxtEmp_lntxtEmp_phonetxtEmp_email它是扔你,当你试图调用Text属性里面AddWithValue方法

异常也许,你有你FindControl("txt<smth>")

0

定义的值有一些问题,试着像下面

System.Web.UI.WebControls.TextBox txtEmp_num=(System.Web.UI.WebControls.TextBoDataGridView1.Rows[0].Cells[0].FindControl("txtEmp_num"); 
System.Web.UI.WebControls.TextBox txtEmp_fn = (System.Web.UI.WebControls.TextBox)DataGridView1.Rows[0].Cells[1].FindControl("txtEmp_fn"); 
System.Web.UI.WebControls.TextBox txtEmp_ln = (System.Web.UI.WebControls.TextBox)DataGridView1.Rows[0].Cells[2].FindControl("txtEmp_ln"); 
System.Web.UI.WebControls.TextBox txtEmp_phone = (System.Web.UI.WebControls.TextBox)DataGridView1.Rows[0].Cells[3].FindControl("txtEmp_phone"); 
System.Web.UI.WebControls.TextBox txtEmp_email = (System.Web.UI.WebControls.TextBox)DataGridView1.Rows[0].Cells[4].FindControl("txtEmp_email"); 
+0

它给了我“指定论证者超出有效值的范围。参数名称:索引 –

+0

它返回给您对TextBox的引用,您可以通过txtEmp_num.Text属性进一步获取Textbox内的值。 – umer

相关问题