c# - 如何为 DataGridViewCheckBoxColumn 提供初始值并修复错误对象引用未设置为对象的实例?
问题描述
我想从数据库中删除 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)row.Cells[0].FormattedValue;
代替
bool status = (bool)dgvprice.Rows[0].Cells[0].Value;
推荐阅读
- linux - Bash 按关键字排序列表
- node.js - 如何在节点中导入别名?
- mysql - Hangfire在'hangfireSet中的'rank附近使用mysql不正确的语法
- python - 我在删除 python3 chr(8) 中的字符时遇到问题
- c - 如何在 cs50 ide 中包含和使用 math.h 库
- c - 混合 c 和汇编:文件输入/输出失败
- ansible - 仅运行具有特定标记或未标记的任务
- c++ - OpenGL 片段着色器未在 Intel HD 4000 图形上编译
- python - Python读取文件并以另一种格式写入
- docker - 为正在运行的容器设置 AutoRemove false