【问题标题】:object reference not set to an instance of an object asp.net,对象引用未设置为对象 asp.net 的实例,
【发布时间】:2016-08-10 09:34:45
【问题描述】:

我有两个问题:

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

    }

【问题讨论】:

标签: c# asp.net gridview textbox


【解决方案1】:

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

这意味着-至少-您的变量之一为空:txtEmp_numtxtEmp_fntxtEmp_lntxtEmp_phonetxtEmp_email 当您尝试调用TextAddWithValue 方法内的属性

也许,您在FindControl("txt<smth>") 中定义的值有问题

【讨论】:

    【解决方案2】:

    像下面这样试试

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

    【讨论】:

    • 它给了我“指定的参数超出了有效值的范围。参数名称:索引
    • 它返回一个对 TextBox 的引用,您可以通过 txtEmp_num.Text 属性进一步获取 Textbox 内的值。
    猜你喜欢
    • 2013-10-28
    • 2020-04-13
    • 2013-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-15
    相关资源
    最近更新 更多