تقييم الموضوع :
  • 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 وتعني ليس فارغ
الرد }}}
تم الشكر بواسطة: الماجيك مسعد


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  كيفية منع ظهور الأخطاء من إعدادات البيسيك mmaalmesry 2 848 29-08-25, 10:30 AM
آخر رد: mmaalmesry
  كيفية جلب أسماء الأعمدة بجدول من جداول sql heem1986 2 745 17-08-25, 09:15 PM
آخر رد: heem1986
  كيفية حفظ إعدادات البرنامج بحيث لا تتغير أحمد إبراهيم سعد 4 3,001 06-08-25, 06:34 PM
آخر رد: Taha Okla
  مساعدة في كيفية ترحيل البيانات من داتا قريدفيو إلى داتا قريدفيو في فيجوال بيسك ahmedfa71 13 2,221 09-07-25, 11:24 PM
آخر رد: أبو خالد الشكري
  كيفية احتساب الفرق بين تاريخين بناء على عدد معين مصمم هاوي 2 551 15-01-25, 02:02 PM
آخر رد: مصمم هاوي
  كيفية التعامل مع inputbox في فيجوال ستوديو أسامة حسين 4 3,500 14-01-25, 02:04 AM
آخر رد: أبو خالد الشكري
  [VB.NET] عكس العرض على ListView aminesori 3 383 25-11-24, 12:42 AM
آخر رد: aminesori
  كيفية معرفة الجهاز رئيسي ام فرعي المتألق9 1 394 13-11-24, 06:41 PM
آخر رد: justforit
  كيفية معرفة تاريخ انشاء ملف وحدفه المتألق9 2 504 07-11-24, 08:54 AM
آخر رد: F.H.M
  [VB.NET] القراءة من ملف txt واضافته في Listview aminesori 4 534 19-10-24, 03:53 PM
آخر رد: salamandal

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


يقوم بقرائة الموضوع: