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

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



تم الحل : تحويل كود لى الدوت نت - العيدروس - 22-04-19

السلام عليكم.اخواني لو سمحتم و من له الخبرة في تحويل الكود النقل بين 2 داتاجريد.بحثت و ما وجدت غير هذا المثال لكن للاسف هو بلغة C .الرجاء من يقدر يحولهولي للغة vb net مع جزيل الشكر.و بارك الله فيكم


RE: تحويل كود لى الدوت نت - elgokr - 22-04-19

مرحباً العيدروس
انت لا تحتاج الى هذا المرفق

فقط لنقل بيانات نت جاتا جريد الى اخر طبق الكود التالى
كود :
       ' تحديد عدد الاعمدة وتكوينها
       DataGridView2.ColumnCount = DataGridView1.ColumnCount
       ' انشاء الاسماء لكل عمود
       For ii As Integer = 0 To DataGridView1.ColumnCount - 1
           DataGridView2.Columns(ii).Name = DataGridView1.Columns(ii).Name
       Next
       ' انشاء الداتا بكل صف
       For Each GetRows As DataGridViewRow In DataGridView1.Rows
           DataGridView2.Rows.Add(GetRows)
       Next

الكود بالاعلى فى حالة ان الداتا جريد 2 فارغة بدون اعمدة كلياً
وفى حالة تصميم الداتا جريد من الاعمدة موجودة وكل ما تحتاج اله هو نقل الداتا فقط

فكل ما عليك تطبيق الكود التالى
كود :
       ' انشاء الداتا بكل صف
       For Each GetRows As DataGridViewRow In DataGridView1.Rows
           DataGridView2.Rows.Add(GetRows)
       Next

وبكده انت تمكنت من نقل الداتا
اذا كان كلياً او جزئياً 

واذا احببت كود بطريقة ثانية فى تكوين الاعمدة ونقل البيانات

فاليك الكود التالى
كود :
       ' انشاء الاعمدة وبيانتها
       For Each GetColumns As DataGridViewColumn In DataGridView1.Columns
           DataGridView2.Columns.Add(GetColumns)
       Next
       ' انشاء الداتا بكل صف
       For Each GetRows As DataGridViewRow In DataGridView1.Rows
           DataGridView2.Rows.Add(GetRows)
       Next

تحياتى لك
وتمنياتى لك التوفيق



RE: تحويل كود لى الدوت نت - العيدروس - 22-04-19

الله يكرمك و يسترك اخي elgokr و يبارك فيك.لكن و الله ما عرفت اضبطها.لو سمحت بعد اذنك اخي تشوف المرفق .انا اريد لما اشيّك على صف من الداتاجريد1 تنبهني رسالة بالنقل و لما اضغط بالمسج نعم ينحذف تماما من الداتاجريد 1 و يتنقل الى الداتاجريد2.بارك الله فيك اخي حاولت لكن ما قدرت اسويها . و يلي تشوفو مناسب للتشييك button او checkbox


RE: تحويل كود لى الدوت نت - elgokr - 23-04-19

مرحباً اخى العيدروس

مرفق بالرد السورس + برنامج للاختبار
لطريقة نقل الداتا من جريد 1 الى جريد 2
وكذلك العكس بدون اى مشكلة او عناء

تحياتى لك
وتمنياتى لك التوفيق



RE: تحويل كود لى الدوت نت - العيدروس - 23-04-19

صح اخي elgokr بدون اي مشكلة او عناء و براحة تامة يتم النقل. بحثت ووجدت امثلة كثير لكن بصراحة مثالك فاق الجميع ربنا يبارك فيك.بقيت لي اخي نقطة اخيرة بعد اذنك لو ممكن يكون messagebox اذا السطر مو عليه علامة تشيك بكس مو متشيّك لا يتم النقل و تظهر رسالة بان السطر لم يتم التعليم بتشيك بكس للأمان فقط عند النقل و بارك الله فيك


RE: تحويل كود لى الدوت نت - elgokr - 23-04-19

مرحباً اخى العيدروس

فقط تعال عند هذا السطر من الكود التحقق الخاص بـ
كود :
           If DataGridView1.Rows(ii).Cells(4).Value Then

الموجود بحدث Button1_Click
وكذلك عند السطر من الكود التحقق الخاص بـ
كود :
If DataGridView2.Rows(ii).Cells(4).Value Then

والموجود بحدث Button2_Click

واضف له فقط
كود :
           Else
               MsgBox("الرسالة")

ليصبح الكود بهذا الشكل
كود :
           If DataGridView1.Rows(ii).Cells(4).Value Then
               DataGridView2.Rows.Item(ii).Visible = True
               DataGridView1.Rows.Item(ii).Visible = False
               DataGridView1.Rows(ii).Cells(4).Value = False
               DataGridView2.Rows(ii).Cells(4).Value = False
           Else
               MsgBox("الرسالة")
           End If

و
كود :
           If DataGridView2.Rows(ii).Cells(4).Value Then
               DataGridView1.Rows.Item(ii).Visible = True
               DataGridView2.Rows.Item(ii).Visible = False
               DataGridView1.Rows(ii).Cells(4).Value = False
               DataGridView2.Rows(ii).Cells(4).Value = False
           Else
               MsgBox("الرسالة")
           End If

تحياتى لك
وتمنياتى لك التوفيق



RE: تحويل كود لى الدوت نت - العيدروس - 23-04-19

شكرا اخي انا غيرت الكود هكذا

كود :
   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       ' نقل الداتا من جريد 1 الى جريد 2
       'For ii As Integer = DataGridView1.RowCount - 1 To 0 Step -1
       '    If DataGridView1.Rows(ii).Cells(4).Value Then
       '        DataGridView2.Rows.Item(ii).Visible = True
       '        DataGridView1.Rows.Item(ii).Visible = False
       '        DataGridView1.Rows(ii).Cells(4).Value = False
       '        DataGridView2.Rows(ii).Cells(4).Value = False
       '    End If
       'Next
       For ii As Integer = DataGridView1.RowCount - 1 To 0 Step -1
           If DataGridView1.Rows(ii).Cells(4).Value Then
               DataGridView2.Rows.Item(ii).Visible = True
               DataGridView1.Rows.Item(ii).Visible = False
               DataGridView1.Rows(ii).Cells(4).Value = False
               DataGridView2.Rows(ii).Cells(4).Value = False
           Else
               MsgBox("انتبه يجب التاكيد بوضع علامة التشيك بكس")
           End If
       Next
   End Sub
لكن المشكلة بمجرد الضغط على اي صف للنقل بدون تشييك يظهر 12 مسج بكس و لو فيه 20 سطر يظهر 20 مسج بكس متتالية
يعني لو نويت انقل صف بدون تشييك يطلعلي مسجات بكس بقدر عدد السطور


RE: تحويل كود لى الدوت نت - elgokr - 23-04-19

(23-04-19, 03:17 AM)العيدروس كتب :  لو ممكن يكون messagebox اذا السطر مو عليه علامة تشيك بكس مو متشيّك لا يتم النقل و تظهر رسالة بان السطر لم يتم التعليم بتشيك بكس للأمان فقط عند النقل و بارك الله فيك

بخصوص الرسالة المتعددة بعدد جميع ما لم يتم

نقل البيانات من جريد الى اخر فانظر الى طلبك فى ردك السابق

الا اذا كنت تريد فقط رسالة واحدة بنهاية الامر بعدد ما لم يتم نقله فاليك التالى
تعال على حدث Button1_Click
واستبدل ما به بهذا الكود
كود :
       ' نقل الداتا من جريد 1 الى جريد 2
       Dim TotalMsg As Integer = 0
       For ii As Integer = DataGridView1.RowCount - 1 To 0 Step -1
           If DataGridView1.Rows.Item(ii).Visible = True Then
               If DataGridView1.Rows(ii).Cells(4).Value Then
                   DataGridView2.Rows.Item(ii).Visible = True
                   DataGridView1.Rows.Item(ii).Visible = False
                   DataGridView1.Rows(ii).Cells(4).Value = False
                   DataGridView2.Rows(ii).Cells(4).Value = False
               Else
                   TotalMsg += 1
               End If
           End If
       Next
       If TotalMsg <> 0 Then MsgBox("لديك عدد " & TotalMsg & " من البيانات التى لم تتم نقلها.")

تعال على حدث Button2_Click
واستبدل ما به بهذا الكود
كود :
       ' نقل الداتا من جريد 2 الى جريد 1
       Dim TotalMsg As Integer = 0
       For ii As Integer = DataGridView2.RowCount - 1 To 0 Step -1
           If DataGridView2.Rows.Item(ii).Visible = True Then
               If DataGridView2.Rows(ii).Cells(4).Value Then
                   DataGridView1.Rows.Item(ii).Visible = True
                   DataGridView2.Rows.Item(ii).Visible = False
                   DataGridView1.Rows(ii).Cells(4).Value = False
                   DataGridView2.Rows(ii).Cells(4).Value = False
               Else
                   TotalMsg += 1
               End If
           End If
       Next
       If TotalMsg <> 0 Then MsgBox("لديك عدد " & TotalMsg & " من البيانات التى لم تتم نقلها.")

وبنهاية النقل اذا وجد شئ لم يتم نقله
سيتم عرض رسالة بالعدد

تحياتى لك
وتمنياتى لك التوفيق



RE: تحويل كود لى الدوت نت - العيدروس - 23-04-19

10/10 اخي elgokr لا اعرف كيف اشكرك .ربنا يجزيك كل خير و يعطيك ما تتمنى ان شاء الله.تم التقييم


RE: تم الحل : تحويل كود لى الدوت نت - elgokr - 24-04-19

الشكر لله والحمد لله
والحمد لله على كل حال

تحياتى لك
وتمنياتى لك التوفيق