C# 如何为DataGridViewCheckBoxColumn提供初始值,并修复未设置为对象实例的错误对象引用?

C# 如何为DataGridViewCheckBoxColumn提供初始值,并修复未设置为对象实例的错误对象引用?,c#,.net,datagridview,datagridviewcolumn,datagridviewcheckboxcell,C#,.net,Datagridview,Datagridviewcolumn,Datagridviewcheckboxcell,我想从数据库中删除DatagGidView中选中的行,我搜索了该站点中的可用问题,但找不到确切答案,如果未选中该行的复选框,如何避免空值错误 我创建了DataGridViewCheckBoxColumn,当单击“删除”按钮时,我需要从数据库中删除选定(选中)行 我尝试了以下代码: 首先,我在从数据库获取数据时创建了DataGridViewCheckBoxColumn DataGridViewCheckBoxColumn checkboxdelete = new DataGridViewChec

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

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

我尝试了以下代码:

首先,我在从数据库获取数据时创建了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新手
如何修复此错误?

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

dgvprice.Columns.Insert(0, checkboxdelete); 
而不是

dgvprice.Columns.Add(checkboxdelete);
bool status = (bool)dgvprice.Rows[0].Cells[0].Value;
然后删除按钮改变了

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

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

@JQSOFT在设置datagridview的数据源后创建DataGridViewCheckBoxColumn时,该列将显示在最后一列,但我需要它显示在第一列。
dgvprice.Columns.Insert(0,checkboxdelete)
我添加了这个codedgvprice.Columns.Insert(0,checkboxdelete);但是给我errorOK,试试这个:
var status=(bool)row.Cells[0].FormattedValue
@JQSOFT谢谢你,太好了,这就是它100%工作的要点,我现在将搜索.Value和.Formattedvalue:)之间的区别。请回答这个问题,我会接受正确答案。