منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : موقع المؤشر بعد الحذف
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
ايها الأحبة الكرام  هذا الكود
يقوم بعملية الحذف بصورة جيدة وليس هناك اي مشكلة
ولكن بعد الحذف يذهب المؤشر إلى أعلى ..!!!
فكيف اجعل المؤشر ينتقل الى السجل الذي يليه اي بقى مكانه

مع التنبيه جربت المشاركات بخصوص الموضوع لم تضبط معاي

هذا هو الكود ..

    'Try

       '    'لتأكيد عملية الحذف
       '    If MsgBox("هل تريد تأكيد عملية الحذف", MsgBoxStyle.YesNo, "تأكيد الحذف") = DialogResult.Yes Then

       '        sqlstr = "Delete From TB_Notices Where ID_Format = @ID_Format"
       '        cmd = New OleDbCommand(sqlstr, conn)
       '        cmd.Parameters.Add("@ID_Format", OleDbType.VarChar).Value = DGVAlert.CurrentRow.Cells(1).Value
       '        conn.Open()
       '        cmd.ExecuteNonQuery()

       '        MsgBox("تمت عملية الحذف بنجاح", MsgBoxStyle.Information, "الحذف")

       '        'سب تحميل البيانات
       '        FillDGVAlert()


       '    End If

       'Catch ex As Exception
       '    MsgBox("لا توجد  تنبيهات معلقة", MsgBoxStyle.Information, "حذف تنبيه")
       'Finally
       '    conn.Close()
       'End Try
السلام عليكم

قم بالاحتفاظ برقم المؤشر قبل ايتمام العملية كالكود التالي
كود :
Dim CurrentRowIndex As Integer = DataGridView1.CurrentRow.Index

وبعد اتمام العملية
وتعبئة الجدول بالبيانات
قم بتحريك المؤشر الى الرقم المحتفظ به سابقا كالكود التالي
كود :
DataGridView1.Rows(CurrentRowIndex).Selected = True
DataGridView1.FirstDisplayedScrollingRowIndex = CurrentRowIndex
جربت كما تفضلت لكن لازال المؤشر يذهب لأعلى ..
وهذا الكود بعد التعديل ...

Try
     Dim CurrentRowIndex As Integer = DGV_Users.CurrentRow.Index
      '    'لتأكيد عملية الحذف
      '    If MsgBox("هل تريد تأكيد عملية الحذف", MsgBoxStyle.YesNo, "تأكيد الحذف") = DialogResult.Yes Then

      '        sqlstr = "Delete From TB_Notices Where ID_Format = @ID_Format"
      '        cmd = New OleDbCommand(sqlstr, conn)
      '        cmd.Parameters.Add("@ID_Format", OleDbType.VarChar).Value = DGVAlert.CurrentRow.Cells(1).Value
      '        conn.Open()
      '        cmd.ExecuteNonQuery()

      '        MsgBox("تمت عملية الحذف بنجاح", MsgBoxStyle.Information, "الحذف")

      '        'سب تحميل البيانات
      '        FillDGVAlert()
     
      DGV_Users.Rows(CurrentRowIndex).Selected = True
      DGV_Users.FirstDisplayedScrollingRowIndex = CurrentRowIndex

      '    End If

      'Catch ex As Exception
      '    MsgBox("لا توجد  تنبيهات معلقة", MsgBoxStyle.Information, "حذف تنبيه")
      'Finally
      '    conn.Close()
      'End Try
اتضح أنك تستخدم جدولين DGVAlert وDGV_Users

وأنت احتفظت برقم المؤشر الخاص ب DGV_Users
ولكنك في السطر DGVAlert.CurrentRow.Cells(1).Value أنت تعاملت بالحذف مع DGVAlert وليس DGV_Users

ارجو أن يكون الخطأ اتضح لك

تفضل التعديل
كود :
Try
   Dim CurrentRowIndex As Integer = DGVAlert.CurrentRow.Index
   'لتأكيد عملية الحذف
   If MsgBox("هل تريد تأكيد عملية الحذف", MsgBoxStyle.YesNo, "تأكيد الحذف") = DialogResult.Yes Then

       sqlstr = "Delete From TB_Notices Where ID_Format = @ID_Format"
       cmd = New OleDbCommand(sqlstr, conn)
       cmd.Parameters.Add("@ID_Format", OleDbType.VarChar).Value = DGVAlert.CurrentRow.Cells(1).Value
       conn.Open()
       cmd.ExecuteNonQuery()

       MsgBox("تمت عملية الحذف بنجاح", MsgBoxStyle.Information, "الحذف")

       'سب تحميل البيانات
       FillDGVAlert()

       DGVAlert.Rows(CurrentRowIndex).Selected = True
       DGVAlert.FirstDisplayedScrollingRowIndex = CurrentRowIndex

   End If

Catch ex As Exception
   MsgBox("لا توجد  تنبيهات معلقة", MsgBoxStyle.Information, "حذف تنبيه")
Finally
   conn.Close()
End Try
اخي مساعدة شكرا لتجاوبك ولكن لا زال المؤشر يذهب للاعلى
لهذا عملت مشروع صغير لتنظر فيه

وشكرا لك ..
بعد تعبيئة قاعدة البيانات بأسماء ..
وأعدت التجربة عمل الكود بأحسم مايرام ..
شكرا لك أخي مساعدة الذي لا تتردد بأي مساعدة ..
شكرا لك كثيرا ..