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

البحث بالكومبكس

بدأه fadhelabass في 30 سبتمبر 2009 · 16 رد · 1,271 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

لدي جدول مربوط DataGridView اريد ان اعمل ComboBox بحث عندما اختار منها يظهر لي الناتج في DataGridView اي اريد ان ابحث في الدات كراد

#2

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

قم بربط الجريد باستخدام DataView وفى حدث SelectedValueChanged التابع للكومبو قم بتغيير خاصية RowFilter للداتا فيو

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#3

انا مبتداء ارجو توضيح ذلك

#4

جرب هذا الكود

  1.  
  2. Public Class Form1
  3.  
  4. Dim dtGrid, dtCombo As DataTable
  5. Dim dvGrid As DataView
  6.  
  7. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
    MyBase.Load
  8. 'تهيئة الجدول
  9. dtGrid = New DataTable
  10. dtGrid.Columns.Add("Id", GetType(Integer))
  11. dtGrid.Columns.Add("Name", GetType(String))
  12.  
  13. 'ملأ الجدول ببيانات افتراضية
  14. dtGrid.Rows.Add(1, "محمد")
  15. dtGrid.Rows.Add(2, "محمود")
  16. dtGrid.Rows.Add(3, "خالد")
  17. dtGrid.Rows.Add(4, "ياسر")
  18. dtGrid.Rows.Add(5, "عمار")
  19.  
  20. 'تهيئة عارض البيانات
  21. dvGrid = New DataView(dtGrid)
  22. 'يمكن أيضا تهيئته بهذه الطريقة
  23. 'dv = dt.DefaultView
  24.  
  25. 'ربط الجريد
  26. Me.DataGridView1.DataSource = dvGrid
  27.  
  28. 'تهيئة مصدر بيانات الكمبو عن طريق أخذ نسخة من مصدر بيانات الجريد
  29. dtCombo = dtGrid.Copy
  30.  
  31. 'ملأ الكومبو
  32. Me.ComboBox1.DataSource = dtCombo
  33. Me.ComboBox1.DisplayMember = "Name"
  34. Me.ComboBox1.ValueMember = "Id"
  35. End Sub
  36.  
  37. Private Sub ComboBox1_SelectedValueChanged(ByVal sender As System.Object, ByVal e As System
    .EventArgs) Handles ComboBox1.SelectedValueChanged
  38. Try
  39. dvGrid.RowFilter = "Id=" & Me.ComboBox1.SelectedValue
  40. Catch ex As Exception
  41. dvGrid.RowFilter = ""
  42. End Try
  43. End Sub
  44. End Class
  45.  

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#5

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

جاري التجربة

#6

تريد وضع ComboBox وتعديل محتويات الداتاغريد حسب محتويات ComboBox بحيث يتم عرض فواتير الزبون المحدد في ComboBox ضمن الداتاغريد وكلما غيرت اسم الزبون ظهرت في الداتاغريد فواتيره فقط.

#7

هل فهمت الكود السابق؟

الكود يحتوى على ماتريد ,, فقط ستغير مصادر البيانات وأسماء الحقول

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#8

أهلاً أخي الكريم،

قم بإضافة ( Combo Box) إلى الـ( Form ) الحاوية للـ( Data Grid View ) إذا كنت تستخدم ( Data Set ) فاعتمادك سيكون على ( Binding Source ) والذي يحوي الخاصية ( Filter ) التي تساعدك على قلترة البيانات أو بمعنى أخر ( عرض البيانات حسب شروط معينة ) وعلى هذا الأساس يمكننا أن نصنع شيء من هذا القبيل :

في بادىء الأمر عليّك إضافة البيانات إلى الـ( Combo Box) إما بشكل يدوي اي عن طريق إدخال قيم له في المصمم ( Designer ) أو بشكل برمجي عن طريق إضافة عناصر إلى الـ( Combo Box ) أو عن طريق استخدام مصدر بيانات أخر أي بإعداد الخاصية ( Data Source ) للـ( Combo Box ) ، الأن نقوم كما ذكرنا بإعداد الخاصية ( Filter ) للـ( Binding Source ) تحت حدث الـ( SelectedIndexChanged ) للـ( Combo Box ) ليصبح بالشكل التالي :

Private Sub CBFilter_SelectedIndexChanged(Byval Sender As Object, _
Byval E As System.EventArgs ) Handles CBFilter.SelectedIndexChanged
If CBFilter.SelectedItem IsNot Nothing Then
Dim EXP As String = String.Format("{0} = {1}", "ColumnName", CBFilter.SelectedItem.ToString())
BindingSource1.Filter = EXP
End If
End Sub

وإذا كان اعتمادك على الـ( Code ) في استيراد البيانات :

أيضاً عليّك تحديد عناصر الـ( Combo Box ) ومن ثم تمثيل الإستعلام بشرط ليتم إستيراد البيانات حسب العلاقة بين كل من قيمة الـ( Combo Box ) وقيمة الخلية التابعة للسجل الحالي :

Private Sub CBFilter_SelectedIndexChanged(Byval Sender As Object, _
Byval E As System.EventArgs ) Handles CBFilter.SelectedIndexChanged
If CBFilter.SelectedItem IsNot Nothing Then
Dim Conn As New SqlConnection("ConnectionString" )
Dim ADP As New SqlDataAdapter( "Select * From TableName Where ColumnName = " & _
CBFilter.SelectedItem.ToString, Conn )
Dim DT As New DataTable("TableName")
Try
Conn.Open
ADP.Fill( DT )
Catch SQEX As SqlException
MsgBox( SQEX.Message )
Catch EX As Exception
MsgBox( Ex.Message )
Finally
ADP.Dispose()
Conn.Close()
End Try
DataGridView1.DataSource = DT
End If
End Sub

بالتوفيق :)

GHOST2010 كتب:
جرب هذا الكود

 

[color= #800000;]Public Class Form1

 

    [color= #800000;]Dim dtGrid, dtCombo [color= #800000;]As DataTable

    [color= #800000;]Dim dvGrid [color= #800000;]As DataView

 

    [color= #800000;]Private [color= #800000;]Sub Form1_Load[color= #66cc66;](ByVal sender [color= #800000;]As System.[color= #66cc66;]Object, ByVal e [color= #800000;]As System.[color= #66cc66;]EventArgs[color= #66cc66;]) Handles 
MyBase.[color= #66cc66;]Load

        [color= #008000;]'تهيئة الجدول

        dtGrid = [color= #800000;]New DataTable

        dtGrid.[color= #66cc66;]Columns.[color= #66cc66;]Add[color= #66cc66;]([color= #ff0000;]"Id", GetType[color= #66cc66;]([color= #800000;]Integer[color= #66cc66;])[color= #66cc66;])

        dtGrid.[color= #66cc66;]Columns.[color= #66cc66;]Add[color= #66cc66;]([color= #ff0000;]"Name", GetType[color= #66cc66;]([color= #800000;]String[color= #66cc66;])[color= #66cc66;])

 

        [color= #008000;]'ملأ الجدول ببي
انات افتراضية

        dtGrid.[color= #66cc66;]Rows.[color= #66cc66;]Add[color= #66cc66;]([color= #cc66cc;]1, [color= #ff0000;]"محمد"[color= #66cc66;])

        dtGrid.[color= #66cc66;]Rows.[color= #66cc66;]Add[color= #66cc66;]([color= #cc66cc;]2, [color= #ff0000;]"محمود"[color= #66cc66;])

        dtGrid.[color= #66cc66;]Rows.[color= #66cc66;]Add[color= #66cc66;]([color= #cc66cc;]3, [color= #ff0000;]"خالد"[color= #66cc66;])

        dtGrid.[color= #66cc66;]Rows.[color= #66cc66;]Add[color= #66cc66;]([color= #cc66cc;]4, [color= #ff0000;]"ياسر"[color= #66cc66;])

        dtGrid.[color= #66cc66;]Rows.[color= #66cc66;]Add[color= #66cc66;]([color= #cc66cc;]5, [color= #ff0000;]"عمار"[color= #66cc66;])

 

        [color= #008000;]'تهيئة عارض الب
يانات

        dvGrid = [color= #800000;]New DataView[color= #66cc66;](dtGrid[color= #66cc66;])

        [color= #008000;]'يمكن أيضا تهيئ
ته بهذه الطريقة

        [color= #008000;]'dv = dt.DefaultView

 

        [color= #008000;]'ربط الجريد

        [color= #800000;]Me.[color= #66cc66;]DataGridView1.[color= #66cc66;]DataSource = dvGrid

 

        [color= #008000;]'تهيئة مصدر بيا
نات الكمبو عن طر&
#1610;ق أخذ نسخة من مص&
#1583;ر بيانات الجري
583;

        dtCombo = dtGrid.[color= #66cc66;]Copy

 

        [color= #008000;]'ملأ الكومبو

        [color= #800000;]Me.[color= #66cc66;]ComboBox1.[color= #66cc66;]DataSource = dtCombo

        [color= #800000;]Me.[color= #66cc66;]ComboBox1.[color= #66cc66;]DisplayMember = [color= #ff0000;]"Name"

        [color= #800000;]Me.[color= #66cc66;]ComboBox1.[color= #66cc66;]ValueMember = [color= #ff0000;]"Id"

    [color= #800000;]End [color= #800000;]Sub

 

    [color= #800000;]Private [color= #800000;]Sub ComboBox1_SelectedValueChanged[color= #66cc66;](ByVal sender [color= #800000;]As System.[color= #66cc66;]Object, ByVal e [color= #800000;]As System
.[color= #66cc66;]EventArgs[color= #66cc66;]) Handles ComboBox1.[color= #66cc66;]SelectedValueChanged

        Try

            dvGrid.[color= #66cc66;]RowFilter = [color= #ff0000;]"Id=" & [color= #800000;]Me.[color= #66cc66;]ComboBox1.[color= #66cc66;]SelectedValue

        Catch ex [color= #800000;]As Exception

            dvGrid.[color= #66cc66;]RowFilter = [color= #ff0000;]""

        [color= #800000;]End Try

    [color= #800000;]End [color= #800000;]Sub

[color= #800000;]End Class

عفواً عفواً :(، فتحت هذا الموضوع من حوالي ساعتين ونصف :( وذهبت لأقوم بشيء هام وعندما عدت كتبت الجواب بدون أن أعمل ( Refresh ) للصفحة ( لم أرى أن هناك من أجاب السؤال :( )

بالتوفيق :)

تم تعديل هذه المشاركة بواسطة Bashar Rabat في 30 سبتمبر 2009 في 14:42

The important thing is not so much

that every child should be taught,

as that every child should be given the wish to learn.

#9

جاري التجربة واعلامك جزاك الله خيرا

#10

السلام عليكم

اخي يمكنك استخدام دالة الدوران for للبحث

for i as integer = 0 to database.table.count-1

code serach

next

بسم الله الذي لا يضر مع اسمه شيء بالارض ولا بالسماء وهو السميع العليم

#11

الاخوة الافاضل

حاولت التطبيق علي الكود المطروح من الاخ محمد مهدي علي الطريقة التي أعمل بها

وكانت النتائج كالتالي

ملئت الداتا جريد فيو بالبيانات

ملئت الكمبو بوكس بالبيانات

مش باقي غير طريقة البحث من خلال البيانات الموجوده في الكمبو بوكس داخل داتا جريد فيو

برجاء المساعده ومرفق مثال علي تجربتي

SearchIntoDGV.rar

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#12

السلام عليكم اخي الحبيب المعذرة على التدخل إن كنت تريد فلترة البيانات في الداتا قريد عن طريق الكومبوبكس فلايحتاج إلى كل هذا الجهد فقط سطرين تكفي

اولا اخي الحبيب ان تقوم بعمل علاقة بين الجدولين

ثانيا في حدث اللود للفورم اكتب التالي لوفرضنا ان اسم العلاقة هو relmember .

combobox.datasource=dataset1
combobox.displaymember="members.name"
combobox.valuemember="members.id"
datagrid1.datasource=dataset1
datagrid1.datamemeber="members.relmembers"

إن لم يعمل معك الكود سوف اقوم بادراج مثال او تعديل مثالك حتى يعمل

أنا الرجل الضرب الذي تعرفونه***خشاش كرأس الحية المتوقد

لوكنت وغلاً في الرجال لضرني**** حسن جرائتي ومقتدي

منتديات طريق الهداية

#13

كيف اعمل علاقة بين جدولين لنفرض الجدول الرئيسي جدول " الاقسام " والجدول الثاني جدول "الموظفين "

#14

عملت كما طلبت مني لكن لم يعمل كما اريد

ومرفق مثال لذلك ارجوا ملاحظة الاخطاء comboxreleation.rar

#15

حياك الله اخي الحبيب

لقد قمت بتعديل البرنامج وارفقت له لك ارجوا ان يكون الامر واضح لك :wink:

comboxreleation.rar

أنا الرجل الضرب الذي تعرفونه***خشاش كرأس الحية المتوقد

لوكنت وغلاً في الرجال لضرني**** حسن جرائتي ومقتدي

منتديات طريق الهداية

#16

استاذي ابو عزام

المرفق هو نفس مثالي اي لم يجري علية اي تغيير ارجو ارفاق الملف المعدل

#17

اساتذتي الاجلاء

ارجو ملاحظة طلبي

اقتباس
عملت كما طلبت مني لكن لم يعمل كما اريد

ومرفق مثال لذلك ارجوا ملاحظة الاخطاء comboxreleation.rar ( 71.17كيلوا بايت ) عدد مرات

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