الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيفية حذف سطر من الــ DataGridView و الداتابيس ؟؟؟؟

بدأه Abo.Mohd في 12 يوليو 2011 · 5 رد · 1,726 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته

اخواني لدي اداة DataGridView ,, من أول ما يفتح الفورم بأسويلها Bind عن طريق sqlDataAdapter و DataSet ,,

ولدي زر لكي يقوم بحذف الأسطر التي يحددها المستخدم ..

نجحت ولله الحمد من حذف السطر المحدد من الــ DataGridView .. ولكني لم أتمكن من حذفها من الداتابيس ,,,,

حاولت كثيراً ولكني لم أعرف كيف .. وأرجوا المساعدة جزاكم الله خيراً .. الأكواد بالأسفل :

private void btnDelete_Click_1(object sender, EventArgs e)
        {
            if (ds1.Tables["Employees"].Rows.Count > 0)
            {
                if (MessageBox.Show("Do you really want to delete selected record?", "Delete Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2, 0, false) == DialogResult.Yes)
                {
                  foreach (DataGridViewRow dr in dg1.SelectedRows)
                  {
                      dg1.Rows.Remove(dr);


                  }
                }
            }
        }

وهذا كود الفورم لود :

public partial class Teach_Info_Frm : Form
    {
        //DataGrid dgridOrders;
        SqlConnection con1;
        SqlDataAdapter da1;
        SqlCommand cmd1;
        DataSet ds1;

        public Teach_Info_Frm()
        {
            InitializeComponent();
            con1 = new SqlConnection("Data Source=localhost;Initial Catalog=Exam_Server;uid=sa;pwd=sa-123");
            da1 = new SqlDataAdapter();
            cmd1 = new SqlCommand();
            ds1 = new DataSet();
        }

        private void Teach_Info_Load(object sender, EventArgs e)
        {
            if (con1.State == ConnectionState.Open)
            {
                con1.Close();
            }
            con1.Open();
            da1.SelectCommand = new SqlCommand("SELECT * FROM Employees", con1);
            da1.Fill(ds1, "Employees");
            CustomizeDataGrid();
            btnShowAll.Enabled = false;
        }

وهذه صوره للفورم :

924408598.png

وأتمنى منكم المساعدة وجزاكم الله خيراً .

#2

السلام عليكم ورحمه الله وبركاته

اخي جرب الكود التالي


private void btnDelete_Click_1(object sender, EventArgs e)
{
if (ds1.Tables["Employees"].Rows.Count > 0)
{
if (MessageBox.Show("Do you really want to delete selected record?", "Delete Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2, 0, false) == DialogResult.Yes)
{
SqlConnection conn = new SqlConnection("ConnectionString");
SqlCommand cmd = new SqlCommand("Delete From Employees Where ID=@ID",conn);
conn.Open();
foreach (DataGridViewRow dr in dg1.SelectedRows)
{
dg1.Rows.Remove(dr);
cmd.Parameter.AddWithValue("ID",Convert.ToInt32(dr.Cells[0].Value));
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
conn.Close();
}
}
}

حيث ان اول عمل بال DataGridView يحتوي رقم الموظف ليتم الحذف من خلاله

.:: Wish to become better and better ::.

#3
VB Helper كتب:

السلام عليكم ورحمه الله وبركاته

اخي جرب الكود التالي


private void btnDelete_Click_1(object sender, EventArgs e)
{
if (ds1.Tables["Employees"].Rows.Count > 0)
{
if (MessageBox.Show("Do you really want to delete selected record?", "Delete Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2, 0, false) == DialogResult.Yes)
{
SqlConnection conn = new SqlConnection("ConnectionString");
SqlCommand cmd = new SqlCommand("Delete From Employees Where ID=@ID",conn);
conn.Open();
foreach (DataGridViewRow dr in dg1.SelectedRows)
{
dg1.Rows.Remove(dr);
cmd.Parameter.AddWithValue("ID",Convert.ToInt32(dr.Cells[0].Value));
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
conn.Close();
}
}
}

حيث ان اول عمل بال DataGridView يحتوي رقم الموظف ليتم الحذف من خلاله

وعليكم السلام ورحمة الله وبركاته

أشكرك أخي على اجابتك .. ولكن الكود لم يعمل ..

بالاضافة أنه اذا كان الــID أرقام وحروف (لأن الــID من نوع varchar) يعطي خطأ : Conversion failed when converting the varchar value '325235r' to data type int.

عند ذلك قمت بعمل Convert ولكن الخطأ مازال موجود !!!!...

أشكرك جزيل الشكر أخي وبإذن الله عندما ألقى الحل سأضعه هنا ..

وفي انتظار محاولات الاخرين ..

وشكراً .

تم تعديل هذه المشاركة بواسطة Abo.Mohd في 12 يوليو 2011 في 13:46

#4

الحمدلله تم الحذف ..

بهذا الكود :

private void btnDelete_Click_1(object sender, EventArgs e)
        {
            if (ds1.Tables["Employees"].Rows.Count > 0)
            {
                if (MessageBox.Show("Do you really want to delete selected record?", "Delete Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2, 0, false) == DialogResult.Yes)
                {

                  foreach (DataGridViewRow dr in dg1.SelectedRows)
                  {
                      //da1.DeleteCommand = new SqlCommand("delete from employees where empid='" + dr.Cells["EmpId"].Value + "'", con1);
                      cmd1 = new SqlCommand("DELETE FROM Employees where empid='"+dr.Cells[0].Value+"'", con1);
                      int NonQuery = cmd1.ExecuteNonQuery();
                      dg1.Rows.Remove(dr);
                      MessageBox.Show(NonQuery+" Row's Was Deleted.");
                  }
                }
            }
        }
#5

السلام عليكم ورحمه الله وبركاته

اخي كان في حسباني رقم الموظف نوعه صحيح, لذا غير السطر الى

cmd.Parameter.AddWithValue("ID",dr.Cells[0].Value);

.:: Wish to become better and better ::.

#6
VB Helper كتب:

السلام عليكم ورحمه الله وبركاته

اخي كان في حسباني رقم الموظف نوعه صحيح, لذا غير السطر الى

cmd.Parameter.AddWithValue("ID",dr.Cells[0].Value);

مشكور أخي والله يعطيك ألف عافية

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…