سؤال

لدي 4 listboxes (lstStates, lstCounties, lstCities ، lstZipcodes).هنا هي عدد قليل من القيود:

  • أيا من listboxes يتم تعطيل.

  • أي listbox يمكن اختيار في أي وقت ، وهذا يعني ليس هناك ترتيب معين للمستخدم أن يختار.

  • تصفية إلى الأمام وإلى الوراء.قبل هذا, أعني إذا كان المستخدم بتحديد الدولة من lstStates ، فإنه سيتم تصفية lstCounties, lstCities ، lstZipcodes.إذا كان المستخدم بتحديد الرمز البريدي من lstZipcodes ، فإنه سيتم تصفية lstCities, lstCounties ، lstStates.

  • على listboxes تسمح تحديدات متعددة.

كل listbox لا بد أن datatable الحصول على البيانات الأولية.Datatable يتم استردادها من sqlserver الإجراء المخزن.كل مربع القائمة الخاصة الإجراء المخزن على سبيل المثال ، lstStates واحد يسمى GetStates والتي ترجع عمود واحد (الدولة) و ListBoxes DataValueField و DataTextField يتم تعيين كل دولة.على غرار lstStates, lstCities لا بد أن datatable الذي يحصل على عمود واحد من GetCities المخزنة بروك الذي هو المدينة.

شيء آخر أريد أن أشير إلى أنني توصيل جهاز ObjectDataSource للحصول على datatable.

هل كانت مفيدة؟

المحلول

سبق أن سألت: ما هي الطريقة الأكثر فعالية لتصفية listboxes استنادا إلى تشكيلة أخرى في c# ؟

[عدل] حسنا, ما عليك القيام به هو إضافة حدث إلى كل [myListbox]_SelectedIndexChanged الحدث.عند اختيار تغيير سوف تحتاج إلى تحديث جميع listboxes على أساس تلك التحديدات.أعتقد أن هذا سوف تحتاج إلى التعامل معها من خلال قاعدة البيانات ، حيث ربط الدول ZipCodes بأي طريقة أخرى تكون قبيحة.لذلك يفترض البيانات الخاصة بك على الدول<-->الكود البريدية<-->المقاطعات العلاقات في db الخاص بك في مكان ما.

لذلك سوف تحتاج إلى أن يكون procs في ديسيبل (أو ينق الطبقة الوسطى) التي تحصل على الدول عن طريق الكود البريدية وهلم جرا.على كل مجموعة تغير الحدث ، وإرسال الاختيار الجديد إلى db sproc ثم ربط مربع القائمة على أساس إرجاع البيانات.يجب أن تكون قادرة على تقديم واحد sproc لكل واحد أن يعود جميع الدول إذا لم الرمز البريدي مرت في آخره.[/عدل]

نصائح أخرى

للتوضيح، عند التحميل الأولي للصفحة، هل تقوم بتحميل جميع الرموز البريدية وجميع المدن وجميع الولايات وجميع البلدان؟

هذا يبدو مرهقا بعض الشيء بالنسبة لي.هذا هو نوع المتطلبات التي أود السؤال عنها.(من المسلم به أنني لا أعلم أنك لم تشكك فيه بالفعل أو أن بعض الإجابات الجيدة جاءت منه).

ScriptManager.RegisterStartupScript(صفحة صفحة.GetType(), "باب", "CacheItems();", true);

فار ddlText, ddlValue, ddl ، lblMesg;وظيفة CacheItems() { ddlText = new Array();ddlValue = new Array();ddl = document.getElementById("");for (var i = 0;أنا
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top