【问题标题】:In grid view my Row doesnot updated nor deleted在网格视图中,我的 Roe 没有更新或删除
【发布时间】:2019-05-12 08:17:37
【问题描述】:

我有一个网格视图,我想在其中应用 CRUD 操作。当我点击更新按钮时,它说:

System.NullReferenceException:对象引用未设置为 new_OCRS.Admin.gvReportCrime_RowUpdating(Object sender, GridViewUpdateEventArgs e) 处的对象实例"

当我点击删除按钮时,它没有显示任何错误但值没有被删除。

这是我的代码

 protected void gvReportCrime_RowUpdating(object sender, GridViewUpdateEventArgs e)
 {
    try
    {

        using (MySqlConnection con = new MySqlConnection(connectionString))
        {
            con.Open();
            string query = "UPDATE reportcrime SET Name=@Name,Phone1=@Phone1,Phone1,Phone2=Phone2,Email=@Email,Gender=@Gender,City=@City,Address=@Address,CrimeType=@CrimeType,CrimeDetail=@CrimeDetail WHERE CNIC = @CNIC";
            MySqlCommand mscmd = new MySqlCommand(query, con);
            mscmd.Parameters.AddWithValue("@Name", (gvReportCrime.Rows[e.RowIndex].FindControl("txtName") as TextBox).Text.Trim());
            mscmd.Parameters.AddWithValue("@ContactNo.1", (gvReportCrime.Rows[e.RowIndex].FindControl("txtPhone1") as TextBox).Text.Trim());
            mscmd.Parameters.AddWithValue("@ContactNo.2", (gvReportCrime.Rows[e.RowIndex].FindControl("txtPhone2") as TextBox).Text.Trim());
            mscmd.Parameters.AddWithValue("@EmailAddress", (gvReportCrime.Rows[e.RowIndex].FindControl("txtEmail") as TextBox).Text.Trim());
            mscmd.Parameters.AddWithValue("@Gender", (gvReportCrime.Rows[e.RowIndex].FindControl("txtGender") as TextBox).Text.Trim());
            mscmd.Parameters.AddWithValue("@CityName", (gvReportCrime.Rows[e.RowIndex].FindControl("txtCity") as TextBox).Text.Trim());
            mscmd.Parameters.AddWithValue("@PostalAddress", (gvReportCrime.Rows[e.RowIndex].FindControl("txtAddress") as TextBox).Text.Trim());
            mscmd.Parameters.AddWithValue("@CrimeType", (gvReportCrime.Rows[e.RowIndex].FindControl("txtCrimeType") as TextBox).Text.Trim());
            mscmd.Parameters.AddWithValue("@CrimeDetail", (gvReportCrime.Rows[e.RowIndex].FindControl("txtCrimeDetail") as TextBox).Text.Trim());
            mscmd.Parameters.AddWithValue("@CNICNO",Convert.ToString(gvReportCrime.DataKeys[e.RowIndex].Value.ToString()));
            mscmd.ExecuteNonQuery();
            gvReportCrime.EditIndex = -1;
            BindData();

        }
    }

    catch (Exception ex)
    {
            Response.Write("" + ex);
    }

 }

 protected void gvReportCrime_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        try
        {

            using (MySqlConnection con = new MySqlConnection(connectionString))
            {
                con.Open();
                string query = "DELETE FROM reportcrime SET WHERE CNIC = @CNIC";
                MySqlCommand mscmd = new MySqlCommand(query, con);
                mscmd.Parameters.AddWithValue("@CNIC", Convert.ToString(gvReportCrime.DataKeys[e.RowIndex].Value.ToString()));
                mscmd.ExecuteNonQuery();
                BindData();

            }
        }
        catch (Exception ex)
        {
            Response.Write("" + ex);
        }
    }

【问题讨论】:

  • 代码改进,语法增强

标签: c# mysql asp.net


【解决方案1】:

您的 AddWithValue 参数与您的更新查询不匹配。例如,您有以下

mscmd.Parameters.AddWithValue("@ContactNo.1",...)

但是您的更新语句中缺少@ContactNo.1。 同样还有其他人。你需要解决这个问题。

【讨论】:

  • 如果您已经完成了修复,请发布更新后的代码,以便查看您拥有的内容。
  • 它在这一行显示空引用“ mscmd.Parameters.AddWithValue("@Name", (gvReportCrime.Rows[e.RowIndex].FindControl("txtName") as TextBox).Text。修剪());"
  • 你需要在该行下一个断点,看看什么是Null。
【解决方案2】:
i have changed my code , @skimad but still same error.
string query = "UPDATE reportcrime SET Name=@Name,Phone1=@Phone1,Phone2=@Phone2,Email=@Email,Gender=@Gender,City=@City,Address=@Address,CrimeType=@CrimeType,CrimeDetail=@CrimeDetail WHERE CNIC = @CNIC";
                    MySqlCommand mscmd = new MySqlCommand(query, con);
                    mscmd.Parameters.AddWithValue("@Name", (gvReportCrime.Rows[e.RowIndex].FindControl("txtName") as TextBox).Text.Trim());
                    mscmd.Parameters.AddWithValue("@txtPhone1", (gvReportCrime.Rows[e.RowIndex].FindControl("txtPhone1") as TextBox).Text.Trim());
                    mscmd.Parameters.AddWithValue("@txtPhone2", (gvReportCrime.Rows[e.RowIndex].FindControl("txtPhone2") as TextBox).Text.Trim());
                    mscmd.Parameters.AddWithValue("@txtEmail", (gvReportCrime.Rows[e.RowIndex].FindControl("txtEmail") as TextBox).Text.Trim());
                    mscmd.Parameters.AddWithValue("@Gender", (gvReportCrime.Rows[e.RowIndex].FindControl("txtGender") as TextBox).Text.Trim());
                    mscmd.Parameters.AddWithValue("@City", (gvReportCrime.Rows[e.RowIndex].FindControl("txtCity") as TextBox).Text.Trim());
                    mscmd.Parameters.AddWithValue("@Address", (gvReportCrime.Rows[e.RowIndex].FindControl("txtAddress") as TextBox).Text.Trim());
                    mscmd.Parameters.AddWithValue("@CrimeType", (gvReportCrime.Rows[e.RowIndex].FindControl("txtCrimeType") as TextBox).Text.Trim());
                    mscmd.Parameters.AddWithValue("@CrimeDetail", (gvReportCrime.Rows[e.RowIndex].FindControl("txtCrimeDetail") as TextBox).Text.Trim());
                    mscmd.Parameters.AddWithValue("@CNIC",Convert.ToString(gvReportCrime.DataKeys[e.RowIndex].Value.ToString()));
                    mscmd.ExecuteNonQuery();

【讨论】:

    【解决方案3】:

    消息“Object not set to instance of Object”表示您正在尝试使用尚未初始化的对象。也就是说,您要么将其设置为 null,要么根本不将其设置为任何值。 runtime 抛出 NullReferenceException 总是意味着同一件事:您正在尝试使用引用。

    在你的方法中使用断点并检查值在哪里为空

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-20
      • 2012-12-31
      • 2011-08-21
      • 1970-01-01
      相关资源
      最近更新 更多