تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] مشكلة في التسلسل الرقمي ؟
#1
بسم الله الرحمن الرحيم
السلام عليكم

لدي ليست فيو، تقوم بعرض سجلات، قمت بوضع عامود على يمين تلك السجلات، من اجل اسناد رقم تصاعدي لتلك السجلات.
تم كتابة الكود التالي
كود :
Sub PopulateListView()
        Dim i As Integer = 1

        With ListView1
            .Clear()
            .View = View.Details
            .Columns.Add("Beda_id", 0, HorizontalAlignment.Center)
            .Columns.Add("م", 60, HorizontalAlignment.Left)
            .Columns.Add("اســم المـــادة", 250, HorizontalAlignment.Left)
            .Columns.Add("سعر الشــراء", 100, HorizontalAlignment.Left)
            .Columns.Add("سعر المبيـع", 100, HorizontalAlignment.Left)
            .Columns.Add("ربح المـادة", 100, HorizontalAlignment.Left)
            .Columns.Add("ملاحظــــات", 280, HorizontalAlignment.Left)


            .GridLines = False
            .FullRowSelect = True
            .Cursor = Cursors.Hand
            .BackColor = Color.Beige
            .ForeColor = Color.Black


            Dim Lst As New ListViewItem
            Dim List = From B In db.Fixed_Bedas Select B

            For Each x In List

                Lst = New ListViewItem(x.Beda_id)
                Lst.SubItems.Add(i)
                Lst.SubItems.Add(x.Beda_Name)

                Lst.SubItems.Add(GetValue(x.Shra_Price))
                Lst.SubItems.Add(GetValue(x.Mabee_Price))
                Lst.SubItems.Add(GetValue(x.Mabee_Price - x.Shra_Price))
                Lst.SubItems.Add(x.Beda_Note)
                .Items.Add(Lst)
                i += 1
            Next
        End With

        For Each LVI As ListViewItem In ListView1.Items
            LVI.SubItems.Item(3).Text = FormatNumber(LVI.SubItems.Item(3).Text, 2)
            LVI.SubItems.Item(4).Text = FormatNumber(LVI.SubItems.Item(4).Text, 2)
            LVI.SubItems.Item(5).Text = FormatNumber(LVI.SubItems.Item(5).Text, 2)
        Next

    End Sub

الا ان الرقم يكون متبوعا، باسم المادة، ويسبب ان الارقام لا تكون متسلسلة كما اريد

- تم اجراء محاولة للحل، عن طريق الغاء الخاصية sorting
وجعلها تاخذ القيمة None

الارقام اصبحت مرتبة تصاعدية كما اريد، ولكن المشكلة ان اسماء المواد اصبحت غير مرتبة

ارجو المساعدة في تحقيق
1- جعل الارقام التي على يمين اسم المادة ارقام تصاعدية
2- بنفس الوقت ان تكون اسماء المواد مفرزة ابجديا تصاعديا

ارجو المساعدة
والف شكر


الملفات المرفقة صورة/صور
           
الرد }}}
تم الشكر بواسطة:
#2
السلام عليكم ورحمة الله وبركاته

أخي الكريم تستطيع بعد عمل تعبئة البيانات في الليست فيو
أن تقوم بإعاداة توزيع الأرقام بهذه الطريقة

كود :
For i = 0 To ListView1.Items.Count - 1
            ListView1.Items(i).Text = i + 1
        Next
الرد }}}
تم الشكر بواسطة: kslawy
#3
السلام عليكم
شكرا اخي sooriaty
على اجابتك

تم محاولة تعبئة العامود بالارقام، بعد ان تم تعبئة الليست فيو
الا ان النيجة كانت غير مرضية على الاطلاق
كود :
Dim Lst As New ListViewItem
            Dim List = From B In db.Fixed_Bedas Select B

            For Each x In List
                Lst = New ListViewItem(x.Beda_id)
                Lst.SubItems.Add("")
                Lst.SubItems.Add(x.Beda_Name)

                Lst.SubItems.Add(GetValue(x.Shra_Price))
                Lst.SubItems.Add(GetValue(x.Mabee_Price))
                Lst.SubItems.Add(GetValue(x.Mabee_Price - x.Shra_Price))
                Lst.SubItems.Add(x.Beda_Note)
                .Items.Add(Lst)
            Next

            For Each x In List
                Lst = New ListViewItem(x.Beda_id)
                Lst.SubItems.Add(i)
                .Items.Add(Lst)
                i += 1
            Next

        End With

ارجو المساعدة
والف شكر


الملفات المرفقة صورة/صور
   
الرد }}}
تم الشكر بواسطة:
#4
السلام عليكم

الحمد لله توصلت للحل، وقد احببت ان اضع الحل، حتى يستفيد منه الاخوة
كود :
Sub PopulateListView()

        Dim i As Integer = 1
        Dim xx As Integer

        With ListView1
            .Clear()
            .View = View.Details
            .Columns.Add("Beda_id", 0, HorizontalAlignment.Center)
            .Columns.Add("م", 60, HorizontalAlignment.Left)
            .Columns.Add("اســم المـــادة", 250, HorizontalAlignment.Left)
            .Columns.Add("سعر الشــراء", 100, HorizontalAlignment.Left)
            .Columns.Add("سعر المبيـع", 100, HorizontalAlignment.Left)
            .Columns.Add("ربح المـادة", 100, HorizontalAlignment.Left)
            .Columns.Add("ملاحظــــات", 280, HorizontalAlignment.Left)

            .GridLines = False
            .FullRowSelect = True
            .Cursor = Cursors.Hand
            .BackColor = System.Drawing.ColorTranslator.FromHtml(My_back_Color_Listview)
            .ForeColor = Color.Black


            Dim Lst As New ListViewItem
            Dim List = From B In db.Fixed_Bedas Select B

            For Each x In List
                Lst = New ListViewItem(x.Beda_id)
                Lst.SubItems.Add("")
                Lst.SubItems.Add(x.Beda_Name)

                Lst.SubItems.Add(GetValue(x.Shra_Price))
                Lst.SubItems.Add(GetValue(x.Mabee_Price))
                Lst.SubItems.Add(GetValue(x.Mabee_Price - x.Shra_Price))
                Lst.SubItems.Add(x.Beda_Note)
                .Items.Add(Lst)
            Next
        End With

        xx = ListView1.Items.Count

        For i = 1 To xx
            ListView1.Items.Item(i - 1).SubItems(1).Text = i
        Next i

        For Each LVI As ListViewItem In ListView1.Items
            LVI.SubItems.Item(3).Text = FormatNumber(LVI.SubItems.Item(3).Text, 2)
            LVI.SubItems.Item(4).Text = FormatNumber(LVI.SubItems.Item(4).Text, 2)
            LVI.SubItems.Item(5).Text = FormatNumber(LVI.SubItems.Item(5).Text, 2)
        Next

        ListView1.Sorting = SortOrder.Ascending
        ListView1.ListViewItemSorter = New ListViewItemComparer(2)
        ListView1.Sort()
    End Sub


الملفات المرفقة صورة/صور
   
الرد }}}
تم الشكر بواسطة: sooriaty03



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


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