الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤال عن لطرق ترتيب لمكونات List Box

مغلق
بدأه mdyehia في 28 نوفمبر 2004 · 4 رد · 862 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمة الله و بركاته

ما هي الطرق لعمل ترتيب لمكونات List Box

المسلمون ربهم واحد و قبلتهم واحدة و كتابهم واحد

و يقفون يوم الحج الاكبر بملبس متشابه في صعيد واحد

و يصلون الجمعة و الجماعات

كل ذلك و قلوبهم متفرقة

اللهم اجمع شمل المسلمين و ألف بين قلوبهم

أبو المنذر

#2

وجدت طريقة لكن أظن ان هناك أفضل منها

Dim array1 As New ArrayList()
Dim loop1 As Integer
For loop1 = 0 To box.Items.Count - 1
  array1.Add(box.Items(loop1).Text)
Next
array1.Sort()
box.Items.Clear()
For loop1 = array1.Count - 1 to 0 step -1
  box.Items.Add(array1(loop1))
Next

المسلمون ربهم واحد و قبلتهم واحدة و كتابهم واحد

و يقفون يوم الحج الاكبر بملبس متشابه في صعيد واحد

و يصلون الجمعة و الجماعات

كل ذلك و قلوبهم متفرقة

اللهم اجمع شمل المسلمين و ألف بين قلوبهم

أبو المنذر

#3

للأسف لا توجد (أو على الاقل لا أعلم) بطريقة لترتيب مكونات ال listbox مباشرة. لذلك من الأفصل على اي حال الاحتفاظ بمصدر المكونات سواءا كان DataSet أو Array أو حتى استدعاء البيانات من جديد من قاعدة البيانات.

الطريقة التي ذكرتها تعمل ولكنها بالطبع ليس الافضل فانت في هذه الحالة تحتفط فقط بالنص Text بدون ال Value .

لذلك من الأفضل أولا نقل جميع مكونات ال listbox الى array بشل كامل وليس فقط النص عن طريق

ListItem[] lia = new ListItem[box.Items.Count]
box.Items.CopyTo(lia,0)

ومن ثم استداعاء الأمر Array.Sort

ولكن المشكلة هنا أن ListIem ليس قابلا للمقارنة . أي ليس IComparable ولذلك علينا أن نصنع كلاسا للمقارنة وذلك من النوع ICoparer

بحيث يكون تعريف الكلاس على الشكل التالي

public class ListBoxItemsSorter : System.Collections.IComparer
{
	public int Compare(object x, object y)
	{
  return ((ListItem)x).Text.CompareTo(((ListItem)y).Text);
	}
}

وبذلك يصبح الكود كاملا

ListItem[] lia = new ListItem[lbSort.Items.Count];
lbSort.Items.CopyTo(lia,0);
Array.Sort(lia,new ListBoxItemsSorter());
lbSort.Items.Clear();
lbSort.Items.AddRange(lia);

للمقارنة انظر الملف المرفق

SortListBoxItems.rar

تم تعديل هذه المشاركة بواسطة DotNetExpert في 3 ديسمبر 2004 في 03:42

وحدن بيبقو متل زهر البيلسان وحدهن بيقطفو وراق الزمان

بيسكرو الغابي بيضلهن متل الشتي يدقوا على بوابي على بوابي

يا زمان يا عشب داشر فوق هالحيطان ضويت ورد الليل عكتابي

برج الحمام مسور و عالي هج الحمام بقيت لحالي لحالي

يا ناطرين التلج ما عاد بدكن ترجعو صرخ عليهن بالشتي يا ديب بلكي بيسمعو

http://www.mazikana.com/Songs/F/Fayrouz/mp...uz---Wahdon.mp3

#4

جزاك الله خيرا DotNetExpert

المسلمون ربهم واحد و قبلتهم واحدة و كتابهم واحد

و يقفون يوم الحج الاكبر بملبس متشابه في صعيد واحد

و يصلون الجمعة و الجماعات

كل ذلك و قلوبهم متفرقة

اللهم اجمع شمل المسلمين و ألف بين قلوبهم

أبو المنذر

#5

اوكي هذه طريقة بال VB.NET لترتيب العناصر في DropDownList و هي تشبه ترتيب العناصر في ال ListBox

http://www.codeproject.com/aspnet/Sort__a_dropdown_box.asp

حظا موفقا

You can fly while you can touch the sky

هذا الموضوع مغلق.

مواضيع مشابهة