如何给DataGridViewCheckBoxColumn赋予初始值并解决错误的对象引用未设置为对象的实例?

时间:2019-12-24 06:22:25

标签: c# .net datagridview datagridviewcolumn datagridviewcheckboxcell

我想从数据库中删除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的新手 该如何解决此错误?

1 个答案:

答案 0 :(得分:1)

谢谢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;