تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[ تمّ الحل ] : إستفسار حول إمكانية تغيير صيغة التّرتيب حسب المجموع
#1
السّلام عليكم و رحمة الله و بركاته
إخواني الأفاضل أرجو المساعدة حول هذه الإشكالية
لاحظوا لو سمحتم البيانات على شبكة الداتاجريد قبل ترتيبها حسب المجموع
كمثال الاسم " عبد العزيز البسكري " يأخذ الرقم 1 حسب الSTUDENT_Id
اللآن بعد الترتيب يصبح الاسم " عبد العزيز البسكري " في الترتيب السادس و هذا صحيح و لكن يتغير الموضع بالداتاجريد
ما أريده هو ان تبقى الأسماء ثابتة حسب ترتيب ال Id
بمعنى يبقى " عبد العزيز البسكري " بالصف الأول على الداتاجريد و يكتب بالعمود الخاص بالترتيب ..  السادس
بارك الله فيكم و لكم و جزاكم خير الجزاء مقدما
تحياتي


الملفات المرفقة
.rar   الترتيب.rar (الحجم : 90.72 ك ب / التحميلات : 22)
قناتنا على اليوتوب
الرد }}}
تم الشكر بواسطة:
#2
هذه الداله من احد الاساتذه وهي صدقه عنه
يمكن للقائمين على المنتدى وضعها في موضوع خاص بها مع قيامهم بشرحها لتعم الفائده للاعضاء والاستاذ صاحب الكود

الافضل وضع هذه الداله ضمن المكتبه dll الخاصه بالمبرمج للتعامل معها في اي مشروع يتم تضمين المكتبه معه
او وضعها في موديول لمناداتها من اي كلاس في المشروع


الداله تتعامل مع الجدول DataTable بعد ان يعبئ بالبيانات وتنادى سواء بالقيمه او المرجع (سيتضح المقصود في طريق التعامل)


قد ترى الكود ليس صغيرا ولكن فيه ثلاث مهام

المهمه الاولى يتاكد من هل الجدول فيه عمود للترتيب
فاذا لم يجده او وجد نوعه ليس نصا فيضيف عمود جديد نصي للترتيب مع اضافت رمز _ لاسم العمود لتلافي تشابه اسماء الاعمده

المهمه الثانيه هو للترتيب

المهمه الثالثه للاختيار بين كلمت "مكرر" وهي الافتراضيه او ترقيم المكرر برقم بين قوسين وهي الاختياريه

الداله
PHP كود :
Public Shared Function OrdinalingDataTableRows(ByRef dataTable As DataTablevalueColumnName As StringordinalColumnName As StringOptional numbering As Boolean False) As DataTable
    If Not dataTable
.Columns.Contains(ordinalColumnNameThen
        dataTable
.Columns.Add(ordinalColumnNameGetType(String))
 
   ElseIf Not dataTable.Columns(ordinalColumnName).DataType Is GetType(String) Then
        dataTable
.Columns.Add(ordinalColumnName "_"GetType(String))
 
       ordinalColumnName ordinalColumnName "_"
 
   End If
 
   Dim dicOrdinals As New Dictionary(Of DoubleString), ordinals = { _
        
"الأول""الثاني""الثالث""الرابع""الخامس""السادس""السابع""الثامن""التاسع""العاشر"_
        
"الحادي عشر""الثاني عشر""الثالث عشر""الرابع عشر""الخامس عشر""السادس عشر""السابع عشر""الثامن عشر""التاسع عشر""العشرين"_
        
"الحادي والعشرين""الثاني والعشرين""الثالث والعشرين""الرابع والعشرين""الخامس والعشرين""السادس والعشرين""السابع والعشرين""الثامن والعشرين""التاسع والعشرين""الثلاثين"}
 
   Dim values = (From x In dataTable.Rows Order By x(valueColumnNameDescending Select x(valueColumnNameDistinct).ToArray
    For index 
0 To ordinals.Count 1
        If index 
values.Count Then Exit For
 
       dicOrdinals.Add(values(index), ordinals(index))
 
   Next
    Array
.ForEach(dataTable.Rows.OfType(Of DataRow).ToArraySub(As DataRowr(ordinalColumnName) = DBNull.Value)
 
   For Each row As DataRow In dataTable.Rows
        Dim value 
row(valueColumnName)
 
       Dim ors row(ordinalColumnName)
 
       Dim count = (From x In dataTable.Rows Where Not IsDBNull(x(ordinalColumnName)) AndAlso x(valueColumnName) = value).Count
        Dim v 
row(valueColumnName)
 
       If dicOrdinals.ContainsKey(row(valueColumnName)) Then
            row
(ordinalColumnName) = dicOrdinals(row(valueColumnName))
 
           If count 0 Then
                If numbering Then
                    row
(ordinalColumnName) &= Space(1) & "(" count ")"
 
                   For Each row2 As DataRow In dataTable.Rows
                        If Not IsDBNull
(row2(ordinalColumnName)) AndAlso row2(ordinalColumnName).Equals(dicOrdinals(row(valueColumnName))) Then
                            row2
(ordinalColumnName) &= Space(1) & "(1)"
 
                       End If
 
                   Next
                Else
                    row
(ordinalColumnName) &= Space(1) & "(مكرر)"
 
               End If
 
           End If
 
       End If
 
   Next
    Return dataTable
End 
Function 

التعامل معها بالمرجع
بعد تعبئت كائن الجدول dt بالبيانات
يكفي ان ترسل للداله اسم كائن الجدول واسم عمود القيم واسم العمود الخاص بالترتيب
(واختياريا يمكن ان تجعل التكرار رقمي باضاف True)
PHP كود :
' يجب ان تعبئ كائن الجدول dt بالبيانات قبل استدعاء الداله
OrdinalingDataTableRows(dt, "STUDENT_Notes", "STUDENT_Ranking") 
او
PHP كود :
' يجب ان تعبئ كائن الجدول dt بالبيانات قبل استدعاء الداله
OrdinalingDataTableRows(dt, "STUDENT_Notes", "STUDENT_Ranking", True) 

التعامل بالقيمه
بان تربط مصدر بيانات الداتاجريدفيو بها مباشره بعد تعبئت الجدول بالبيانات
PHP كود :
' يجب ان تعبئ كائن الجدول dt بالبيانات قبل استدعاء الداله
Me.DataGridView1.DataSource = OrdinalingDataTableRows(dt, "STUDENT_Notes", "STUDENT_Ranking") 
او
PHP كود :
' يجب ان تعبئ كائن الجدول dt بالبيانات قبل استدعاء الداله
Me.DataGridView1.DataSource = OrdinalingDataTableRows(dt, "STUDENT_Notes", "STUDENT_Ranking", True) 
الرد }}}
تم الشكر بواسطة: asemshahen5 , Moneam


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  ارسال ضربات مفتاح عن طريق بوتون [تم الحل] ابراهيم ايبو 0 1,302 08-08-21, 04:25 PM
آخر رد: ابراهيم ايبو
  [كود] تغيير حجم التيكست بوكس عند الكتابة فيه سعود الشامان 1 2,512 02-10-17, 09:16 AM
آخر رد: ابو روضة

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم