04-02-24, 10:17 AM
(03-02-24, 04:14 PM)صالح عبدالله كتب : السلام عليكم ورحمة الله وبركاته
يوجد لدي datagridview1 وبها عدد 20 عمود والعمود رقم 12 يحتوي على الأسماء وأغلبها مكرر سؤالي كيف أقوم بنقل الأسماء إلى datagridview2 وهي خالية من البيانات تحتوي على عمودين فقط الاسم وعدد مرات التكرار علماً أنني استخدمت الكود التالي وبالفعل يقوم بنقل الاسماء الى العمود الأول بدون تكرار datagridview2 ولكن في العمود الثاني يظهر لي عدد مرات التكرار 0
جزاكم الله خير
Private Function foundcount(ByVal t As String, d As DataGridView) As IntegerDim fc As Integer = 0Dim rowscount As Integer = d.Rows.Count - IIf(d.AllowUserToAddRows, 2, 1)For i As Integer = 0 To rowscountDim m As String = d.Rows(i).Cells(0).ValueIf m.ToString.ToLower = t.ToString.ToLower Thenfc += 1End IfNextReturn fcEnd Function
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.ClickIf dg.Rows.Count = 0 Then Exit SubDim rowscount As Integer = dg.Rows.Count - IIf(dg.AllowUserToAddRows, 2, 1)For i As Integer = 0 To rowscountDim tn As String = dg.Rows(i).Cells(0).ValueDim f As Integer = foundcount(tn.ToString.ToLower, dg)Dim found As Integer = foundcount(tn, d2)If found = 0 Thend2.Rows.Add(tn.ToString.ToLower, f)End IfNextEnd Sub
شكراً من الأعماق استاذ عاصم والله فرجت عني هم كبير وجعل هذا العمل في ميزان حسناتك جالس أحاول من 10 ساعات والمشكلة لم تحل الا بجوابك السريع ما شاء الله تبارك الله ولكن هذا جعلني أطمع في كرمك بسؤال آخر في نفس الموضوع حيث يوجد في العمود رقم 13 اسم الشركة التي ينتمي لها الشخض كيف اقوم بإضافة اسم الشركة في العمود 3 في datagridview2
أكرر أسفي لكثرة الأسئلة ولكنني جديد في البرمجة ولكم خالص تحياتي
جرب هذا الكود
PHP كود :
Private Sub MoveNamesToDataGridView2()
DataGridView2.Rows.Clear()
Dim nameCountDict As New Dictionary(Of String, Integer)
Dim columnIndex As Integer = -1
For Each col As DataGridViewColumn In DataGridView1.Columns
columnIndex = col.Index
Exit For
End If
Next
If columnIndex <> -1 Then
For Each row As DataGridViewRow In DataGridView1.Rows
Dim name As String = If(row.Cells(columnIndex).Value IsNot Nothing, row.Cells(columnIndex).Value.ToString(), "")
If Not String.IsNullOrEmpty(name) Then
If nameCountDict.ContainsKey(name) Then
nameCountDict(name) += 1
Else
nameCountDict(name) = 1
End If
End If
Next
For Each kvp As KeyValuePair(Of String, Integer) In nameCountDict
Dim name As String = kvp.Key
Dim count As Integer = kvp.Value
DataGridView2.Rows.Add(name, count)
Next
End If
End Sub
وفي الزر ضع
PHP كود :
MoveNamesToDataGridView2()

