c# - 在网格视图中,我的行没有更新也没有删除
问题描述
我有一个网格视图,我想在其中应用 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);
}
}
解决方案
您的 AddWithValue 参数与您的更新查询不匹配。例如,您有以下
mscmd.Parameters.AddWithValue("@ContactNo.1",...)
但是您的更新语句中缺少@ContactNo.1。同样还有其他人。你需要解决这个问题。
推荐阅读
- python - 使用重新编码与 FFMPEG 自动连接
- php - phpSPO 库 - 未经授权的访问异常。需要图书馆基础知识的指导
- ios - 如何映射一个 Observable
到另一种类型的 Observable 在 RxSwift 中? - sql - 如何返回最近的值?
- c# - 强名称签名对此程序集无效
- flutter - 启动颤振应用程序时出错
- git - 如果其他分支已合并到主分支,如何将我的分支合并到主分支
- html - nodeJs运行时如何在浏览器中打开html文件
- typescript - 如何使用 ts 在 vue3 中将 ref 数据定义为类类型
- node.js - 本地 mongodb Node.js 服务器成功进行身份验证,然后在几秒钟后结束连接