![]() |
|
combobox لا يعرض الداتا عند عمل select - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (https://vb4arb.com/vb) +-- قسم : قسم لغة الفيجوال بيسك VB.NET (https://vb4arb.com/vb/forumdisplay.php?fid=182) +--- قسم : قسم اسئلة VB.NET (https://vb4arb.com/vb/forumdisplay.php?fid=183) +--- الموضوع : combobox لا يعرض الداتا عند عمل select (/showthread.php?tid=24432) |
combobox لا يعرض الداتا عند عمل select - تناسيم - 05-04-18 السلام عليكم اقوم يكتابة كود select في حدث combobox1.selectedindex Dim com1 As New SqlCommand("select * from table_1 where id='" & Val(ComboBox4.Text) & "' ", con) Dim s1 As New DataSet Dim t1 As New SqlDataAdapter t1.SelectCommand = com1 t1.Fill(s1, "table_1") If s1.Tables(0).Rows.Count <> 0 Then ComboBox1.DataSource = s1.Tables("table_1") ComboBox1.DisplayMember = "name" ComboBox1.ValueMember = "name" End If ولكن لا يعرض الداتا في combobox1 على الرغم من اني قمت بكتابة الكود في الجدول الخاص بالداتا في ال sql وتم عرض الاسم الخاص بال id ملحوظة الكود يعمل في مكان اخر من الproject ملحوظة تتكرر كثيرا هذه المشكلة الخاصة ب امر select في حدث combobox.selectedindex ارجو الافادة وشكرا RE: combobox لا يعرض الداتا عند عمل select - عبدالله الدوسري - 05-04-18 أنت الآن في الحدث ComboBox.SelectedIndexChanged Event وتقوم بإسناد مصدر البيانات ( DataSource ) إلى الـــ ComboBox1 عنما تقوم بإسناد أو تحديد مصدر البيانات للـ ComboBox1 ينتج عن هذا الأمر ( أحداث كثيرة ) ومن ضمنها إزالة أي عناصر في الــ ComboBox1 وربطها بالعناصر في الــ DataSource الجديدة التي وضعتها أنت الآن وهذا الأمر ينتج عنة أن يكون العنصر المحدد هو أول عنصر في المجموعة الموجودة في الــ DataSource مما يجبر الـــ ComboBox1 على إطلاق الحدث ( ComboBox.SelectedIndexChanged ) مره أخرى لاحظ أنك في الحدث ( ComboBox.SelectedIndexChanged ) ولم تنتهي من الإجراءات التي كتبتها في هذا الحدث بالرغم من ذلك يتم إطلاقة مرة أخرى وأنت في منتصف الحدث القديم إذا كانت لديك فكرة معينة لإعادة تعبئة الــ ComboBox1 من نفس الحدث الخاص به , قم بإنشاء متغير يدل على أنك تقوم بإعادة إسناد مصدر البيانات حتى تقوم بالخروج من الحدث مثلاً : قم بلإعلان عن متغير بإسم ( DataSourceIsChanging ) من نوع ( Boolean ) ( خارج الحدث ) Dim DataSourceIsChanging As Boolean = False الأن في داخل الحدث وعند أول سطر تحقق من هذا المتغير حتى لا تتكرر الإجراءات ملاحظات فقط لا غير : مصدر البيانات يتم إسنادة مرة واحدة فقط عند إنشاء النافذة , لا تحتاج أن تقوم بإسنادة في كل مرة لماذا تقوم بإنشاء DataSet في كل مرة لماذا تقوم بإنشاء SqlDataAdapter في كل مرة قم بإنشائهم مرة واحدة فقط في الحدث New مثلاً الخاص بالنافذة أو حتى أعلن عنها وإنشئها في العام الخاص بالنافذة ( ستتم قبل الحدث New ) كل ما عليك هو إعادة إستخدامها |