سلام.
برای حذف تکی (به محض چک دار کردن رکورد در دیتابیس و دیتاگرید حذف شود) .نام ستون از نوع چکباکس در دیتاگرید check ونام ستون آیدی رکورذ Id میباشد
private void radGridView1_CellEndEdit(object sender, GridViewCellEventArgs e)
{
if (e.ColumnIndex == radGridView1.Columns["check"].Index && e.RowIndex != -1)
{
if ((bool)radGridView1.CurrentRow.Cells["check"].Value)
{
using (SqlCommand cmd = new SqlCommand())
{
var myID= (int)radGridView1.CurrentRow.Cells["Id"].Value;
cmd.CommandText = @"DELETE FROM Stock WHERE ID = @myID";
cmd.Parameters.Add("@myID", SqlDbType.Int).Value = myID);
cmd.ExecuteNonQuery();
//حذف سطر جاری در دیتاگرید
radGridView1.Rows[e.RowIndex].Delete();
}
}
}
}
اگر هم بخوای بصورت گروهی حذف شود باید یه لیست برای نگهداری رکوردهای انتخاب شده در نظر بگیری . ابتدا یک کلاس کمکی برای نگهداری RowIndexو RecordId رکورد انتخاب شد تعریف شود
public class Rec
{
public int RowInex { get; set; }
public int RecordId { get; set; }
}
نحوه اضافه کردن ایتم انتخاب شده به لیست رکوردهای انتخابی بصورت زیر عمل شود
List<Rec> SelectedItems = new List<Rec>();
private void radGridView1_CellEndEdit(object sender, GridViewCellEventArgs e)
{
if (e.ColumnIndex == radGridView1.Columns["check"].Index && e.RowIndex != -1)
{
if ((bool)radGridView1.CurrentRow.Cells["check"].Value)
SelectedItems.Add(new Rec { RowInex = e.RowIndex, RecordId = (int)radGridView1.CurrentRow.Cells["Id"].Value });
else
SelectedItems.Remove(SelectedItems.Find(c => c.RowInex == e.RowIndex));
}
}
حالا شما لیستی از Id رکورد های نتخاب شده در دیتاگرید را دارید با حلقه foreach تک تک Id ها حذف شود
foreach (var item in SelectedItems)
{
using (SqlCommand cmd = new SqlCommand())
{
cmd.CommandText = @"DELETE FROM Stock WHERE ID = @myID";
cmd.Parameters.Add("@myID", SqlDbType.Int).Value = item.RecordId);
cmd.ExecuteNonQuery();
radGridView1.Rows[item.RowInex].Delete();
}
}