منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
سؤولان هامان في الداتا جريد فيو - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (https://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (https://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (https://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : سؤولان هامان في الداتا جريد فيو (/showthread.php?tid=56242)



سؤولان هامان في الداتا جريد فيو - yosif - 21-04-26

السلام علكيم
معي داتا جريد فيو : وبدون الارتباط بجدول في قاعدة البيانات
فيها عمودين اثنين  هما :              من رقم             الى رقم
                  السجل الاول  مثلا:   من رقم = 1       الى رقم   = 2
                 السجل الثاني                     = 3                     =4
                السجل الثالث                      = 5                    =6    
المطلوب
1- كود يقوم بالاتي : في بداية خلية السجل الثاني كيف يتم اضافة رقم تلقائي  لثصبح (3)    بزيادة واحد  لان خلية السجل السابق انتهى برقم(2)
                         وعند الانتقال الى خلية السجل الثالث يتم اضافة رقم تلقائي لثصبح (5) لان خلية السجل السابق انتهى برقم (4) 
2- كود لعدم الانتقال الى خلية جديدة في الداتا جريد فيو الا بعد تعبئة الخلية السابقة 
بارك الله فيكم


RE: سؤولان هامان في الداتا جريد فيو - Amir_Alzubidy - 21-04-26

PHP كود :
' ======= الحدث الأول: الرقم التلقائي =======
Private Sub dgv_CellEnter(sender As Object, e As DataGridViewCellEventArgs) Handles dgv.CellEnter

    If e.ColumnIndex = 0 AndAlso e.RowIndex > 0 Then

        Dim currentRow As DataGridViewRow = dgv.Rows(e.RowIndex)
        Dim previousRow As DataGridViewRow = dgv.Rows(e.RowIndex - 1)

        If IsDBNull(currentRow.Cells("Col_From").Value) OrElse
           String.IsNullOrWhiteSpace(currentRow.Cells("Col_From").Value?.ToString()) Then

            Dim prevToValue As String = previousRow.Cells("Col_To").Value?.ToString()

            If Not String.IsNullOrWhiteSpace(prevToValue) Then
                Dim prevTo As Integer
                If Integer.TryParse(prevToValue, prevTo) Then
                    currentRow.Cells("Col_From").Value = prevTo + 1
                End If
            End If

        End If
    End If

End Sub

======= الحدث الثانيمنع الانتقال قبل التعبئة =======
Private 
Sub dgv_CellValidating(sender As ObjectAs DataGridViewCellValidatingEventArgsHandles dgv.CellValidating

    
If e.RowIndex dgv.NewRowIndex Then Exit Sub

    
If String.IsNullOrWhiteSpace(e.FormattedValue?.ToString()) Then
        e
.Cancel True
        MessageBox
.Show("لا يمكن الانتقال قبل تعبئة هذه الخلية!""تنبيه",
                        MessageBoxButtons.OKMessageBoxIcon.Warning)
    End If

End Sub 



RE: سؤولان هامان في الداتا جريد فيو - yosif - 21-04-26

السلام عليكم 
للاسف الشديد
1 الكود الخاص باضافة واحد الى نهاية الخلية الاولى ليظهر في الخلية الاخرى بزيادة واحد  تم تجربته ولم يكن الكود صحيح
2 الكود الخاص بتجميد خلايا الداتا جريد فيو بحيث لا يتم الانتقال الى خلية جديدة الا بعد تعبئة الخلية السابقة فيتم على السجل الاول فقط
بينما بقية السجلات لا يتم تنفيذ الكود فيها


RE: سؤولان هامان في الداتا جريد فيو - Amir_Alzubidy - 22-04-26

طيب ارجو منك توضيح المطلوب
السؤولان مبهمان .
هل العمود الاول فقط يتم الكتابة فيه و الاخر مغلق
اذا تمت الكتابة من اين يبدأ الترقيم ؟
سؤال ماذا لو قام المستخدم الكتابة في اول خلية 10 فماذا عن الترقيم التالي او الترقيم المقابل ؟
هل الترقيم تلقائي و ضرورة البدء من 1 ؟
جميع هذه الاسئلة كان من باب اولى ايضاحها في سؤالايك سابقاً
و اذا لديك نموذج بسيط قمت بعمله ارفقه في ردك القادم
تحياتي لك