对象引用未设置为对象asp.net的实例,

时间:2016-08-10 09:34:45

标签: c# asp.net gridview textbox

我有两个问题:

  1. 我如何以其他方式使用文本框,以免引发任何错误?
  2. 我收到一个错误:
      

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

  3. 我不知道如何解决它。 请有人看看吗?

    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);
                }
            }
    
        }
    

2 个答案:

答案 0 :(得分:0)

Object reference not set to an instance of an object表示您正在尝试获取属性/调用某个null的方法。

这意味着 - 至少 - 你的一个变量是null:txtEmp_numtxtEmp_fntxtEmp_lntxtEmp_phonetxtEmp_email并且它正在抛出当您尝试在Text方法

中调用AddWithValue属性时出现异常

也许,您在FindControl("txt<smth>")

中定义的值存在问题

答案 1 :(得分: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");