2016-08-10 2 views
0

J'ai deux problèmes:référence d'objet non définie à une instance d'un asp.net objet,

  1. comment puis-je utiliser textbox d'une autre manière il jeter wont toute erreur?
  2. j'ai obtenu une erreur.

    « référence d'objet non définie à une instance d'un objet

et je ne sais pas comment le résoudre s'il vous plaît quelqu'un peut-il prendre. un regard?

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

Essayez de 'déboguer 'le code et de voir quel contrôle est' null'. – mmushtaq

+1

Voir http://stackoverflow.com/a/4660186/5836671 – VDWWD

Répondre

0

Object reference not set to an instance of an object signifie que vous essayez de ge t une propriété/appelant une méthode de quelque chose qui est null.

Cela signifie que l'une au moins-votre variable est nulle: txtEmp_num, txtEmp_fn, txtEmp_ln, txtEmp_phone, txtEmp_email et il est vous lancer une exception lorsque vous essayez d'appeler la propriété Text à l'intérieur AddWithValue méthode

peut-être, vous avez un problème avec les valeurs que vous avez définies dans FindControl("txt<smth>")

0

Essayez comme ci-dessous

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

il me donne" argumenr spécifié hors de la gamme de valeurs valides. nom du paramètre: index –

+0

il vous renvoie une référence à la TextBox vous pouvez en outre obtenir la valeur dans la propriété Textbox by txtEmp_num.Text. – umer