حذف سطرهای انتخاب شده DataGridView از دیتابیس
فرض کنید یک بانک اطلاعاتی در اختیار دارید و اطلاعات آن را به صورت زیر در دیتاگریدویو نمایش داده اید :
حال می خواهید با تیک زدن هر سطر، سطر معادل آن در دیتابیس حذف شود. کد این کار به صورت زیر است :
using System; using System.Collections.Generic; using System.Data; using System.Windows.Forms; using System.Data.SqlClient; namespace DeleteSeveralRowsDGV { public partial class Form1 : Form { private readonly string ConnectionString; public Form1() { InitializeComponent(); this.ConnectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;" + @"AttachDbFilename=|DataDirectory|\db.mdf;" + @"Integrated Security=True;Connect Timeout=30"; } public DataTable SelectAllPerson() { string query = "SELECT ID, firstname, lastname FROM Persons;"; SqlConnection SqlConnection1 = new SqlConnection(this.ConnectionString); SqlCommand SqlCommand1 = new SqlCommand(query, SqlConnection1); SqlDataAdapter SqlDataAdapter1 = new SqlDataAdapter(SqlCommand1); DataTable DataTable1 = new DataTable(); SqlDataAdapter1.Fill(DataTable1); return DataTable1; } public void DeleteMultipleRows(List<string> selectedRowIds) { if (selectedRowIds.Count > 0) { string deleteQuery = "DELETE FROM Persons WHERE "; for (int i = 0; i < selectedRowIds.Count; i++) { deleteQuery += " ID = " + selectedRowIds[i] + " OR"; } deleteQuery = deleteQuery.Substring(0, deleteQuery.Length - 3); SqlConnection SqlConnection1 = new SqlConnection(this.ConnectionString); SqlCommand SqlCommand1 = new SqlCommand(deleteQuery, SqlConnection1); try { SqlConnection1.Open(); SqlCommand1.ExecuteNonQuery(); } catch (Exception) { } finally { SqlConnection1.Close(); } } } private void Form1_Load(object sender, EventArgs e) { this.dataGridView1.DataSource = this.SelectAllPerson(); } private void btnDelete_Click(object sender, EventArgs e) { List<string> selectedRows = new List<string>(); for (int i = 0; i < this.dataGridView1.RowCount; i++) { if (Convert.ToBoolean(this.dataGridView1.Rows[i].Cells[0].Value) == true) { selectedRows.Add(this.dataGridView1.Rows[i].Cells[1].Value.ToString()); } } if (selectedRows.Count > 0) { this.DeleteMultipleRows(selectedRows); this.dataGridView1.DataSource = this.SelectAllPerson(); } } } }