نمایش نتایج 1 تا 6 از 6

نام تاپیک: مرتب کردن لیست عددی

  1. #1
    کاربر دائمی آواتار Hossis
    تاریخ عضویت
    آبان 1386
    محل زندگی
    بیرجند
    پست
    1,731

    مرتب کردن لیست عددی

    مرتب کردن لیست عددی یک مشکل داره که اعداد به صورت رشته مرتب می شوند مثلا اعداد یک تا 12 به این صورت مرتب می شوند.
    1
    10
    11
    12
    2
    3
    ...
    در حالی که هنگام مرتب سازی (Sort) می خواهیم به ترتیب شماره یعنی 1،2،3،... مرتب شود،
    ایا راه حلی برای این مشکل وجود دارد؟

  2. #2

    Wink نقل قول: مرتب کردن لیست عددی

    در صورتی که لیست عددی شما یک آرایه است تنها کافیست تا نوع مناسب عددی را برای آرایه انتخاب نمایید.
    اما در صورتی که منظور شما از مرتب سازی ، مرتب سازی خود کار کنترل هایی مانند DataGridView است ، لازم است این نکته را یاد آور شوم که این کنترل های به صورت پیش فرض اطلاعات درج شده در سطر ها و ستون ها را از نوع رشته در نظر گرفته و مرتب می کنند . برای مرتب سازی ستون هایی مانند کد، شماره پرسنلی و ... که قالب عددی دارند لازم است تا نوع ستون را به نوع عددی تبدیل نمایید.
    ساختن ستونی از نوع عددی در DataGridView می توانید از چنین کدی استفاده نمایید :


    Dim Col AsNew DataGridViewColumn
    Col.Name = "ID"
    Col.HeaderText = "کد کاربر"
    Col.ValueType = System.Type.GetType("System.Int64")
    DgvData.Columns.Add(Col)



    و یا در هنگام فراخوانی اطلاعات از دیتابیس نوع آن را مشخص نمایید.
    دانلود حسابخانه مانی، برنامه مدیریت درآمد و هزینه رایگان

    هر آنچه که هستیم، نتیجه افکاریست که در گذشته داشته ایم. (بودا)
    واحد فاصله «متر» نیست، «اشتیاق» است. اگر مشتاقش باشی حتی يک قدم هم فاصله ای دور است.

    رنگ رنگی | آموزش

  3. #3
    کاربر دائمی آواتار ali_md110
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    شیراز
    پست
    1,181

    نقل قول: مرتب کردن لیست عددی

    اگر اعداد یکان بصورت 01 یا 02 باشند مشکلتون حل میشه

  4. #4
    کاربر دائمی آواتار Hossis
    تاریخ عضویت
    آبان 1386
    محل زندگی
    بیرجند
    پست
    1,731

    نقل قول: مرتب کردن لیست عددی

    نقل قول نوشته شده توسط Mani_rf مشاهده تاپیک
    ساختن ستونی از نوع عددی در DataGridView می توانید از چنین کدی استفاده نمایید :
    ممنون
    ولی من میخواهم در کنترلهای معمولی مثل جعبه لیست (ListBox) یا لیست نمایش(ListView) این مرتب سازی رو انجام بدم. اعضای اون رو چطور عددی کنم؟

  5. #5
    کاربر دائمی آواتار Hossis
    تاریخ عضویت
    آبان 1386
    محل زندگی
    بیرجند
    پست
    1,731

    نقل قول: مرتب کردن لیست عددی

    نقل قول نوشته شده توسط ali_md110 مشاهده تاپیک
    اگر اعداد یکان بصورت 01 یا 02 باشند مشکلتون حل میشه
    ولی اگر به 100 برسه باز هم مشکل سر جاش هست

  6. #6

    نقل قول: مرتب کردن لیست عددی

    نقل قول نوشته شده توسط Hossis مشاهده تاپیک
    ممنون
    ولی من میخواهم در کنترلهای معمولی مثل جعبه لیست (ListBox) یا لیست نمایش(ListView) این مرتب سازی رو انجام بدم.
    این هم راه حل منتها قصدم ازاین راه حل بیشتر اینه که با آورلود کردن آشنا بشین (مربوط به اون تاپیک دیگتون میشه بیشتر)

    فرض می گیریم که طبق گفته ی شما احتیاج به مرتب سازی لیست باکس و لیست ویو دارین :



    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Sort_Control_List(ListBox1, SortType.Ascendant)
    Sort_Control_List(ListView1, SortType.descendant)
    End Sub


    Private Enum SortType
    Ascendant
    descendant
    End Enum
    Private Overloads Sub Sort_Control_List(ByRef Listbox_control As ListBox, ByVal Sort_Type As SortType)
    Dim temp As String
    If Sort_Type = SortType.Ascendant Then
    For i = 0 To Listbox_control.Items.Count - 1
    For j = i To Listbox_control.Items.Count - 1
    If Val(Listbox_control.Items(i).ToString) >= Val(Listbox_control.Items(j).ToString) Then
    temp = Listbox_control.Items(i).ToString
    Listbox_control.Items(i) = Listbox_control.Items(j)
    Listbox_control.Items(j) = temp
    End If
    Next
    Next
    Else
    For i = 0 To Listbox_control.Items.Count - 1
    For j = i To Listbox_control.Items.Count - 1
    If Val(Listbox_control.Items(i).ToString) <= Val(Listbox_control.Items(j).ToString) Then
    temp = Listbox_control.Items(i).ToString
    Listbox_control.Items(i) = Listbox_control.Items(j)
    Listbox_control.Items(j) = temp
    End If
    Next

    Next
    End If
    End Sub


    Private Overloads Sub Sort_Control_List(ByRef listview_control As ListView, ByVal Sort_Type As SortType)
    Dim temp As String
    If Sort_Type = SortType.Ascendant Then
    For i = 0 To listview_control.Items.Count - 1
    For j = i To listview_control.Items.Count - 1
    If Val(listview_control.Items(i).Text) >= Val(listview_control.Items(j).Text) Then
    temp = listview_control.Items(i).Text
    listview_control.Items(i).Text = listview_control.Items(j).Text
    listview_control.Items(j).Text = temp
    End If
    Next
    Next
    Else
    For i = 0 To listview_control.Items.Count - 1
    For j = i To listview_control.Items.Count - 1
    If Val(listview_control.Items(i).Text) <= Val(listview_control.Items(j).Text) Then
    temp = listview_control.Items(i).Text
    listview_control.Items(i).Text = listview_control.Items(j).Text
    listview_control.Items(j).Text = temp
    End If
    Next

    Next
    End If
    End Sub

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •