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

كيفية تغيير حقل في الداتا جريد تلقائيا ؟؟؟

مغلق
بدأه ابوخالد العيدروس في 24 نوفمبر 2005 · 3 رد · 814 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

عندي داتا جريد تحتوي على الحقول التالية :

رمز السلعة - البيان - الكمية - السعر - الاجمالي

المطلوب عندما يتم تغيير الكمية او السعر يجب ان يتغير الاجمالي تلقائيا ..

حاولت عن طريق الكود التالي والحدث ( CurrentCellChanged )

Private Sub dgrOrder_CurrentCellChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles dgrOrder.CurrentCellChanged
        
        dgrOrder.Item(dgrOrder.CurrentRowIndex, 4) = dgrOrder.Item(dgrOrder.CurrentRowIndex, 2) * dgrOrder.Item(dgrOrder.CurrentRowIndex, 3)

    End Sub

لكن المشكلة ان قيمة الاجمالي لاتتغير الا اذا ضغطت مرة اخرى على الصف الذي حصل فيه التغيير ...

فما الحل ؟؟؟

#2

السلام عليكم

قد تجد حل أفضل مما سأطرحه الان Compact pattern

الحل أن نقوم بتعريف متغيرات تأشر على القيمة الحالية للصفوف, من ثم نختبر هذه القيمة إن لم تكون فارغة Null

نسندها في صف الإجمالي أو المجموع . سيكون بهذا الشكل

في أعلى النموذج نعرف متغيرين رقميين بهذا الشكل

Dim R, C As Integer

المتغير R سيمثل رقم الصف, بينما المتغير C سيمثل رقم العامود.

ثم في حدث CurrentCellChanged نكتب التالي

C = DataGrid1.CurrentCell.ColumnNumber
        R = DataGrid1.CurrentCell.RowNumber
        Dim col1, col2 As Object


        If Me.DataGrid1.CurrentCell.ColumnNumber = 0 Then
            col1 = DataGrid1(R, 0)
            col2 = DataGrid1(R, 1)
            If Not col1 Is System.DBNull.Value And _
            Not col1 Is Nothing Then
                DataGrid1(R, C + 2) = col1 + col2
            End If
        End If


        If Me.DataGrid1.CurrentCell.ColumnNumber = 1 Then
            col1 = DataGrid1(R, 0)
            col2 = DataGrid1(R, 1)
            If Not col2 Is System.DBNull.Value And _
            Not col2 Is Nothing Then
                DataGrid1(R, C + 1) = col1 + col2
            End If
        End If


        If Me.DataGrid1.CurrentCell.ColumnNumber = 2 Then
            col1 = DataGrid1(R, 0)
            col2 = DataGrid1(R, 1)
            Me.DataGrid1(R, C) = col1 + col2
        End If

قمت بتعريف متغيرين من نوع عنصر Dim col1, col2 As Object لمعرفة هل القيمة Null اي Nothing

شاهد الملف المرفق للإضاح. بالتوفيق إن شاء الله. (ربما ليس هذا هو الحل الافضل,,, بالتأكيد)...

ColumnCalcuatedWithDG.zip

تم تعديل هذه المشاركة بواسطة الغملاسي في 25 نوفمبر 2005 في 00:00

في المثال يتضح المقال

#3

اخوي الغملاسي شكرا جزيلا لك ...

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

وشكرا

هذا الموضوع مغلق.

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