تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] كيفية فلترة ليست فيو vb net Multiple Column Filter listview
#1
السلام عليكم

اريد افكار او طرق او كود يعمل فلترة لعناصر ليست فيو فى اكتر من عمود

بمعنى نفترض ان لدى ليست فيو تملك

الاسم - السن - الوظيفة - المرتب

كيف يتم عمل فلترة فى الاسم والراتب معا ؟

انا اقدر اعملها بشروط if

ولكن ستكون عملية الفلترة بطيئة جدا وليست جيدة على ما اعتقد خصوصا ان المشروع كبير وايضا عناصر الليست فيو سوف تكون كثيرة

بانتظار ابداعتكم
الرد
تم الشكر بواسطة:
#2
للرفع للرفع للرفع للرفع
الرد
تم الشكر بواسطة:
#3
للرفع للرفع للرفع للرفع
الرد
تم الشكر بواسطة:
#4
السلام عليكم

يمكن استغلال البحث في مصدر البيانات الذي قمت بتعبئة الليست فيو منه، والبحث فيه بشكل أسرع من قراءة خلايا الليست فيو.

وعموما هذا طريقة البحث في الليست فيو ويعيد مصفوفة من مجموعة أسطر،
البحث في العمود الأول نصا (الاسم مثلا) والعمود الرابع رقما (الراتب مثلا)
كود :
Dim itms() As ListViewItem =
    Me.ListView1.Items.Cast(Of ListViewItem).
    Where(Function(i) i.SubItems(0).Text.Equals(TextBox1.Text) _
              And Val(i.SubItems(3).Text).Equals(Val(TextBox2.Text))).ToArray

وهذا الكود ليعيد سطر واحد فقط
كود :
Dim itm As ListViewItem =
    Me.ListView1.Items.Cast(Of ListViewItem).
    Where(Function(i) i.SubItems(0).Text.Equals(TextBox1.Text) _
              And Val(i.SubItems(3).Text).Equals(Val(TextBox2.Text))).FirstOrDefault
الرد
تم الشكر بواسطة:
#5
(23-01-17, 02:12 AM)مساعدة كتب : السلام عليكم

يمكن استغلال البحث في مصدر البيانات الذي قمت بتعبئة الليست فيو منه، والبحث فيه بشكل أسرع من قراءة خلايا الليست فيو.

وعموما هذا طريقة البحث في الليست فيو ويعيد مصفوفة من مجموعة أسطر،
البحث في العمود الأول نصا (الاسم مثلا) والعمود الرابع رقما (الراتب مثلا)
كود :
Dim itms() As ListViewItem =
   Me.ListView1.Items.Cast(Of ListViewItem).
   Where(Function(i) i.SubItems(0).Text.Equals(TextBox1.Text) _
             And Val(i.SubItems(3).Text).Equals(Val(TextBox2.Text))).ToArray

وهذا الكود ليعيد سطر واحد فقط
كود :
Dim itm As ListViewItem =
   Me.ListView1.Items.Cast(Of ListViewItem).
   Where(Function(i) i.SubItems(0).Text.Equals(TextBox1.Text) _
             And Val(i.SubItems(3).Text).Equals(Val(TextBox2.Text))).FirstOrDefault
شكرا لك اخى بارك الله فيك

ولكن كيف الاستخدام ليتم اظهار العناصر المطابقة للبحث فى الليست فيو واخفاء باقى العناصر

وكيف الغى هذا البحث لكى يظهر كل العناصر كما كانت؟
الرد
تم الشكر بواسطة:
#6
أخبرتك سابقاً أن إجراء البحث سيسهل العملية وكثيراً ويسرعها في حالة البيانات الكثيرة.

في الوضع السابق يجب الاحتفاظ بالاسطر قبل إجراء البحث، وستم البحث على الاسطر المحتفظ بها

هنا يتم إنشاء متغير للإحتفاط بالاسطر الأصلية
كود :
Private ListView1Items() As ListViewItem

هنا كيفية تعبئة المتغير السابق بالأسطر الأصلية
كود :
ListView1Items = Me.ListView1.Items.Cast(Of ListViewItem).Select(Function(x) x).ToArray

هنا عملية البحث كما ذكرتها في مشاركتي السابقة مع عدم ظهور باقي العناصر
كود :
Dim itms() As ListViewItem = ListView1Items.
    Where(Function(i) i.SubItems(0).Text.Equals(TextBox1.Text) _
              And Val(i.SubItems(3).Text).Equals(Val(TextBox2.Text))).ToArray

Me.ListView1.Items.Clear()
Me.ListView1.Items.AddRange(itms)

هنا إعادة العناصر الأصلية للأداة
كود :
Me.ListView1.Items.Clear()
Me.ListView1.Items.AddRange(ListView1Items)


والوضع مختلف وأسهل في حال التعامل مع مصدر البيانات التي تمت تعبئة أداة الليست فيو منه.


في حالة وجود سؤال آخر الرجاء وضع مشروعك ليتم إيجاد الحل المناسب.
الرد
تم الشكر بواسطة: الماجيك مسعد
#7
(23-01-17, 10:54 AM)مساعدة كتب : أخبرتك سابقاً أن إجراء البحث سيسهل العملية وكثيراً ويسرعها في حالة البيانات الكثيرة.

في الوضع السابق يجب الاحتفاظ بالاسطر قبل إجراء البحث، وستم البحث على الاسطر المحتفظ بها

هنا يتم إنشاء متغير للإحتفاط بالاسطر الأصلية
كود :
Private ListView1Items() As ListViewItem

هنا كيفية تعبئة المتغير السابق بالأسطر الأصلية
كود :
ListView1Items = Me.ListView1.Items.Cast(Of ListViewItem).Select(Function(x) x).ToArray

هنا عملية البحث كما ذكرتها في مشاركتي السابقة مع عدم ظهور باقي العناصر
كود :
Dim itms() As ListViewItem = ListView1Items.
   Where(Function(i) i.SubItems(0).Text.Equals(TextBox1.Text) _
             And Val(i.SubItems(3).Text).Equals(Val(TextBox2.Text))).ToArray

Me.ListView1.Items.Clear()
Me.ListView1.Items.AddRange(itms)

هنا إعادة العناصر الأصلية للأداة
كود :
Me.ListView1.Items.Clear()
Me.ListView1.Items.AddRange(ListView1Items)


والوضع مختلف وأسهل في حال التعامل مع مصدر البيانات التي تمت تعبئة أداة الليست فيو منه.


في حالة وجود سؤال آخر الرجاء وضع مشروعك ليتم إيجاد الحل المناسب.

اقسم بالله العظيم انك شخص مبدع

وتقريبا انت الشخص الوحيد الى فهمت ما اريد بالظبط

للعلم انى سئلت فى اكتر من منتدى اخر ولم يفهم قصدى اى شخص رغم انى وضحت لهم اكتر من هذا الموضوع ولكن دون جدوى

ولم يفهم قصدى سواك

+ انى ملاحظ مساعدتك البرئية فى كامل المنتدى ولكامل الاعضاء دون اى مقابل ولوجه الله فقط

اهنئك اخى على ذلك وربنا يذيدك من علمه

وباذن الله قريبا اشوفك من اداريين المنتدى


بارك الله فيك
الرد
تم الشكر بواسطة:
#8
بارك الله فيك، والحمد لله رب العالمين،
لا أريد أي شيء سواء من المنتدى أو الأعضاء،
فإني محتسب الأجر عند الله تعالى فقط صدقة عن والدي وعن نفسي.
الرد
تم الشكر بواسطة: الماجيك مسعد
#9
ايه افضل كود يتحقق ان العمود فيه قيمة وانه مش فاضى؟

مثلا فى عمود رقم 7

ازاى اتحقق ان الصف رقم 1 فى العمود رقم 7 فيه قيمة وليس فارغ؟
الرد
تم الشكر بواسطة:
#10
تفضل الكود
كود :
' Items الصف
' SubItems العمود
' الصف والعمود يبدأ بالرقم صفر
' يعني العمود الاول يكون العمود رقم صفر والعمود الثاني يكون العمود رقم واحد وهكذا في الصف

Dim hasValue As Boolean = ListView1.Items(1).SubItems(7).Text.Trim <> ""
هنا سيحتوي hasValue إما True وتعني فارغ أو False وتعني ليس فارغ
الرد
تم الشكر بواسطة: الماجيك مسعد


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  كيفية دمع بيانات فى تكست بوكس واحد سمير جمال 3 81 04-12-18, 04:07 PM
آخر رد: Rabeea Qbaha
  [VB.NET] كيف يمكن تحديد كلمة بلون داخل listview XBOOBX 1 73 30-11-18, 06:28 PM
آخر رد: XBOOBX
  سؤال في ListView Emam emam 4 93 22-11-18, 04:47 PM
آخر رد: Emam emam
  سؤال في كيفية عمل Sub report باخل الكريستال ريبورت Emam emam 3 87 19-11-18, 07:19 PM
آخر رد: elgokr
  كيفية كتابة المصفوفة راغب عبد اللطيف 0 50 19-11-18, 02:05 AM
آخر رد: راغب عبد اللطيف
  كيفية اظافة كلمة مرور لبرنامج وحفظها hamadz 2 110 14-11-18, 03:08 PM
آخر رد: dasktop
  [VB.NET] حذف المكرر من ليست فيو الماجيك مسعد 9 282 10-11-18, 06:10 PM
آخر رد: الماجيك مسعد
  [VB.NET] كيفية تحديث تصميم قاعدة البيانات دون فقدان السجلات larbihamri 4 121 07-11-18, 02:13 PM
آخر رد: larbihamri
  [سؤال] محتاج مساعدة في ListView Simo1991 1 50 06-11-18, 05:46 PM
آخر رد: Rabeea Qbaha
  [سؤال] فتح صورة من خلال openfiledialog وعرضها في listview Simo1991 1 93 05-11-18, 06:47 PM
آخر رد: Simo1991

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


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