注册 登录
编程论坛 C# 论坛

无法删除datagridview中选定行(数据库中删除)

lukebc 发布于 2016-08-30 15:15, 3630 次点击
public static string str = "";
        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (this.dataGridView1.SelectedRows.Count > 0)
                str = this.dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            DialogResult dr = MessageBox.Show("确定要删除吗?", "提示", MessageBoxButtons.OKCancel);
            if (dr == DialogResult.OK)
            {
                if (str == "")
                {
                    MessageBox.Show("请选择你要删除的行!", "警告", MessageBoxButtons.OKCancel);
                    return;
                }
                string sql = "delete from text1 where bh='" + str + "'";
                str = "";
                MessageBox.Show("该学生已被删除!", "提示");
            }
str 没有取得值,一直弹出“请选择你要删除的行”,不知道怎么改
5 回复
#2
over12302016-08-30 16:34
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (this.dataGridView1.SelectedRows.Count > 0)
                str = this.dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
        }

改成
 private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
             if (this.dataGridView1.SelectedRows.Count > 0)
                str = this.dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
        }

设中断,监控下程序运行就情况,很容易分析出问题原因
#3
向洪林2016-08-31 09:23
与数据库有交互吗??
#4
maxke2016-09-01 09:09
希望能有所帮助
 private void dgv_cx_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex >= 0)
            {
                //条件为真
                if (e.ColumnIndex == 0)
                {
                    DataGridViewCellCollection dgvCC = this.dgv_cx.Rows[e.RowIndex].Cells;
                    DBaccess.AccessHelper.ExecuteSql("UPDATE 成型浇注 SET 浇注日期='" + dgvCC["浇注日期"].Value + "',料浆编号='" + dgvCC["料浆编号"].Value + "',模具编号='" + dgvCC["模具编号"].Value + "',模盖编号='" + dgvCC["模盖编号"].Value + "',成型位置='" + dgvCC["成型位置"].Value + "',浇注面='" + dgvCC["浇注面"].Value + "',浇注时间='" + dgvCC["浇注时间"].Value + "',开模时间='" + dgvCC["开模时间"].Value + "',耗时='" + dgvCC["耗时"].Value + "' WHERE 产品编号='" + this.dgv_cx.Rows[e.RowIndex].Cells["产品编号"].Value + "'");
                    MessageBox.Show("修改成功!");
                }
                //条件为假
                else if (e.ColumnIndex == 1)
                {
                    DialogResult dr = MessageBox.Show("是否要删除此条信息?", "对话框标题", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
                    if (dr == DialogResult.OK)
                    {
                        DBaccess.AccessHelper.ExecuteSql("DELETE FROM 成型浇注 WHERE 产品编号='" + this.dgv_cx.Rows[e.RowIndex].Cells["产品编号"].Value + "' ");
                        MessageBox.Show("删除成功!");
                        DBaccess.AccessHelper.ExecuteSql("DELETE FROM 产品信息表 WHERE 产品编号='" + this.dgv_cx.Rows[e.RowIndex].Cells["产品编号"].Value + "' ");
                        MessageBox.Show("产品形态已更新!");
                        xianshishuj();
                    }
                    else { MessageBox.Show("请谨慎操作,信息一旦删除会造成数据库漏洞,可以尝试修改数据!"); }
                }
            }
            else
            {
                MessageBox.Show("操作有误!");
            }
        }
#5
向洪林2016-09-01 22:59
        private void btnDelete_Click(object sender, EventArgs e)
        {
            if (dgvFoods.SelectedRows.Count > 0)//判断GetData是否选中某条信息
            {
                for (int i = 0; i < dgvFoods.SelectedRows.Count; i++)
                {
                    int id = Convert.ToInt32(dgvFoods.SelectedRows[i].Cells[0].Value);//获取ID
                    dgvFoods.Rows.RemoveAt(dgvFoods.SelectedRows[i].Index);
                    //string names = dgvFoods.SelectedCells[0].Value.ToString();//获取欲删除信息的名称
                    string connectionString = ConfigurationManager.ConnectionStrings["connectionstring"].ConnectionString;
                    SqlConnection conn = new SqlConnection(connectionString);
                    conn.Open();
                    string sql = "delete from tb_GuestFood where ID='" + id + "' and zhuotai='" + RName + "'";
                    SqlCommand cmd = new SqlCommand(sql, conn);
                    cmd.ExecuteNonQuery();
                    conn.Close();
                }
                MessageBox.Show("移除成功");
                GetData();//重新绑定数据
            }
            else
            {
                MessageBox.Show("请您选择不需要的餐饮,然后删除");
            }
        }

希望对你能有所帮助
#6
q80211252017-03-20 11:52
  
        private void button2_Click(object sender, EventArgs e)
        {
        int   str=-1;//建立变量
        try//
        {
            str= dataGridView1.CurrentRow.Index;//获取当前行索引
        }
        Exception()
        {
             MessageBox.Show("请选择你要删除的行或表格内没有数据!", "警告", MessageBoxButtons.OKCancel);
             return;
        }           
        DialogResult dr = MessageBox.Show("确定要删除吗?", "提示", MessageBoxButtons.OKCancel);
            if (dr == DialogResult.OK)
            {               
                string sql = "delete from text1 where bh='" + dataGridView1.Rows[str].Cells[0].Value.ToString() + "'";
                str = "";
                MessageBox.Show("该学生已被删除!", "提示");
            }

      点击删除时,代码意思是,先获取该行索引号,如果获取不到,弹出没有选择行的提示,如果有索引号,将进入删除选择,是,进行删除,否跳过

[此贴子已经被作者于2017-3-20 12:00编辑过]

1