C#winform datagridview删除指定行资料
1、在实现建立好的winform窗体界面上添加一个datagridview控件,拉取到适当大小,属性可以默认。

2、添加主窗体刷新函数,这样做的目的就是我们新增、删除后立即显示刷新到窗体上。
private void product_raiseCallBackRefreshEvent()
{
Product_Load(null, null);//刷新窗体
}

3、创建查询条件存储过程,这里是从tproduct表进行查询。
USE [BF]
GO
/****** Object: StoredProcedure [dbo].[select_product] Script Date: 03/31/2018 13:10:23 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create proc [dbo].[select_product]
as
begin
select P_no,P_name,P_spc,P_type,P_pos from tproduct
end

4、编写winform中datagridview显示数据代码,也就是说,我们的目的是把查询到的值显示到datagridview中.这里还给datagridview行加上“编辑”栏位。
private void show_data(DataGridView DG)
{
SqlCommand cmd = new SqlCommand("select_product", login.share_cls.conn);
cmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter dpt = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
dpt.Fill(dt);
DataGridViewCheckBoxColumn ck = new DataGridViewCheckBoxColumn();
DG.Columns.Add(ck);
DG.DataSource = dt;
DG.Columns[0].HeaderText = "选择";
DG.Columns[1].HeaderText = "料号";
DG.Columns[2].HeaderText = "品名";
DG.Columns[3].HeaderText = "规格";
DG.Columns[4].HeaderText = "料号";
DG.Columns[5].HeaderText = "密度";
DG.Columns[0].Width = 50;
}

5、编写winfrom登录时的事件,这里是将产品信息显示到datagridview控件中。
private void Product_Load(object sender, EventArgs e)
{
if (login.share_cls.conn.State == ConnectionState.Closed)
{
login.share_cls.conn.Open();
}
dataGridView1.Columns.Clear();
show_data(dataGridView1);
dataGridView1.AllowUserToAddRows = false;//關閉dataGridview中最後一個空白行。
login.share_cls.conn.Close();
}

6、编写datagridview控件被打击时的事件,也就是我们前面提到的“选择”功能
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
try
{
if (e.ColumnIndex == 0 && e.RowIndex >= 0)
{
foreach (DataGridViewRow row in dataGridView1.Rows)
{
row.Cells[e.ColumnIndex].Value = false;
dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = true;
}
if ((bool)this.dataGridView1.Rows[e.RowIndex].Cells[0].EditedFormattedValue)
{
products.p_no = dataGridView1.Rows[e.RowIndex].Cells[1].EditedFormattedValue.ToString();
products.p_name = dataGridView1.Rows[e.RowIndex].Cells[2].EditedFormattedValue.ToString();
}
else
{
products.p_no = "";
products.p_name = "";
}
}
}

7、给“删除”按钮添加代码,实现单击删除按钮删除我们选中的行。
private void toolStripButton3_Click(object sender, EventArgs e)
{
if (login.share_cls.conn.State == ConnectionState.Closed)
{
login.share_cls.conn.Open();
}
if (Product.products.p_no==""&&Product.products.p_name == "")
{
MessageBox.Show("请选择数据!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
DialogResult dr = MessageBox.Show("确定要删除此产品信息吗?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
if (dr == DialogResult.OK)
{
del_prd(Product.products.p_no, "delete from tdepartment");
product_raiseCallBackRefreshEvent();
}
login.share_cls.conn.Close();
}
private void del_prd(string p_no, string sqlstr)
{
SqlCommand cmd = new SqlCommand("" + sqlstr + " where p_ no='" + p_no + "'", login.share_cls.conn);
cmd.ExecuteNonQuery();
}
}
}

8、到此,实现了我们删除datagridview上指定栏位的数据,附上完成代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace BF销售管理系统
{
public partial class Product : Form
{
public Product()
{
InitializeComponent();
}
private void toolStripButton1_Click(object sender, EventArgs e)
{
}
private void product_raiseCallBackRefreshEvent()
{
Product_Load(null, null);
}
public static class products
{
private static string _p_no;
public static string p_no
{
get { return _p_no; }
set { _p_no = value; }
}
private static string _p_name;
public static string p_name
{
get { return _p_name; }
set { _p_name = value; }
}
private static string _p_spc;
public static string p_spc
{
get { return _p_spc; }
set { _p_spc = value; }
}
private static string _p_type;
public static string p_type
{
get { return _p_type; }
set { _p_type = value; }
}
private static string _p_pos;
public static string p_pos
{
get { return _p_pos; }
set { _p_pos = value; }
}
}
private void show_data(DataGridView DG)
{
SqlCommand cmd = new SqlCommand("select_product", login.share_cls.conn);
cmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter dpt = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
dpt.Fill(dt);
DataGridViewCheckBoxColumn ck = new DataGridViewCheckBoxColumn();
DG.Columns.Add(ck);
DG.DataSource = dt;
DG.Columns[0].HeaderText = "选择";
DG.Columns[1].HeaderText = "料号";
DG.Columns[2].HeaderText = "品名";
DG.Columns[3].HeaderText = "规格";
DG.Columns[4].HeaderText = "料号";
DG.Columns[5].HeaderText = "密度";
DG.Columns[0].Width = 50;
}
private void Product_Load(object sender, EventArgs e)
{
if (login.share_cls.conn.State == ConnectionState.Closed)
{
login.share_cls.conn.Open();
}
dataGridView1.Columns.Clear();
show_data(dataGridView1);
dataGridView1.AllowUserToAddRows = false;//關閉dataGridview中最後一個空白行。
login.share_cls.conn.Close();
}
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
try
{
if (e.ColumnIndex == 0 && e.RowIndex >= 0)
{
foreach (DataGridViewRow row in dataGridView1.Rows)
{
row.Cells[e.ColumnIndex].Value = false;
dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = true;
}
if ((bool)this.dataGridView1.Rows[e.RowIndex].Cells[0].EditedFormattedValue)
{
products.p_no = dataGridView1.Rows[e.RowIndex].Cells[1].EditedFormattedValue.ToString();
products.p_name = dataGridView1.Rows[e.RowIndex].Cells[2].EditedFormattedValue.ToString();
}
else
{
products.p_no = "";
products.p_name = "";
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void toolStripButton3_Click(object sender, EventArgs e)
{
if (login.share_cls.conn.State == ConnectionState.Closed)
{
login.share_cls.conn.Open();
}
if (Product.products.p_no==""&&Product.products.p_name == "")
{
MessageBox.Show("请选择数据!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
DialogResult dr = MessageBox.Show("确定要删除此产品信息吗?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
if (dr == DialogResult.OK)
{
del_prd(Product.products.p_no, "delete from tdepartment");
product_raiseCallBackRefreshEvent();
}
login.share_cls.conn.Close();
}
private void del_prd(string p_no, string sqlstr)
{
SqlCommand cmd = new SqlCommand("" + sqlstr + " where p_no='" + p_no + "'", login.share_cls.conn);
cmd.ExecuteNonQuery();
}
}
}
