首页 > 解决方案 > 如何为 DataGridViewCheckBoxColumn 提供初始值并修复错误对象引用未设置为对象的实例?

问题描述

我想从数据库中删除 DatagGidView 中选中的行,我在这个站点中搜索了可用的问题,但我找不到确切的答案,如果复选框未选中该行,如何避免空值错误。

我创建了 DataGridViewCheckBoxColumn,当​​单击删除按钮时,我需要从数据库中删除选定的(选中的)行。

DGV

我尝试了以下代码:

首先,我在从数据库获取数据时创建了 DataGridViewCheckBoxColumn

DataGridViewCheckBoxColumn checkboxdelete = new DataGridViewCheckBoxColumn();
dgvprice.Columns.Add(checkboxdelete);
checkboxdelete.HeaderText = "Select";
checkboxdelete.Name = "delete";
dgvprice.DataSource = pricelist.GET_CUSTOMER_PRICELIST(Convert.ToInt32(textCustId.Text));

然后删除按钮的代码我尝试了多个解决方案检查空值但也不起作用:

private void btndelete_Click(object sender, EventArgs e)
{
    foreach (DataGridViewRow row in dgvprice.Rows)
    {
        // if (!string.IsNullOrEmpty(row.Cells[0].ToString()) && !string.IsNullOrEmpty(row.Cells[0].Value.ToString()))

        bool status = (bool)dgvprice.Rows[0].Cells[0].Value;
        if (status)
        {
            string cs = ConfigurationManager.ConnectionStrings["mamlakalabConnectionString"].ConnectionString;
            SqlConnection con = new SqlConnection(cs);
            SqlCommand cmd = new SqlCommand("delete from Customers_Price_List where testid = '" + row.Cells[1].Value.ToString() + "' and custid = '" + textCustId.Text + "'", con);
            con.Open();
            cmd.ExecuteNonQuery();
            con.Close();
        }
    }
    MessageBox.Show("Deleted Successfully", "Successfull operation", MessageBoxButtons.OK, MessageBoxIcon.Information);
}

我也尝试了以下问题,但没有针对我的案例的确切解决方案:

我需要确切的答案,请问我是 .NET 新手,如何解决此错误?

标签: c#.netdatagridviewdatagridviewcolumndatagridviewcheckboxcell

解决方案


谢谢JQSOFT先生的回答,我更改了以下内容:

dgvprice.Columns.Insert(0, checkboxdelete); 

代替

dgvprice.Columns.Add(checkboxdelete);

然后删除按钮改变了

bool status = (bool)row.Cells[0].FormattedValue; 

代替

bool status = (bool)dgvprice.Rows[0].Cells[0].Value;

推荐阅读