Bound DropDownList من العناصر "غير المستخدمة" بالإضافة إلى عنصر الصف الحالي في EditeDemtemplate من GridView؟

StackOverflow https://stackoverflow.com/questions/2250395

سؤال

لدي طاولان مع معرفات فريدة يمكن تعيينها إلى بعضها البعض (يأتي جدول واحد من قاعدة بيانات خارج تطبيقي ولكن لديه معلومات حول نفس الكيانات التي أتبعها). أريد أن أقدم واجهة مستخدم لربط سجلات "My" مع "الآخر"، لذلك يمكنني تخزين معرفات "أخرى" في طاولتي لسجلات المطابقة. باختصار، فإن عنصر UI الرئيسي هو قائمة هبوطية توضح السجلات المتاحة (أي، غير المرتبطة غير المرتبطة) من جدول "الآخر".

لدي GridView لعرض سجلات "بلدي" في كل صف، بالإضافة إلى عمود يوضح بعض المعلومات من السجل المرتبط في جدول "الآخر"، إن وجدت. البيانات هي عن المباني والخصائص، لذلك قد تبدو مثل هذا:

Building1   Dallas   TX    Building1_Dallas_TX
Building2   Memphis  TN    Bldg2_Memphis_TN
Building3   Denver   CO
Building4   Seattle  WA
Building5   Boston   MA    Building5_Boston_MA

حيث تظهر الأعمدة الثلاثة الأولى بعض المعلومات من جدول "My"، والآخر يعرض السجل المطابق من الجدول "الآخر"، حيث تم ربط السجلات بالفعل، أخرى فارغة حيث تم إنشاء رابط. يحتوي GridView الفعلي الخاص بي على عدة أعمدة من طاولة "My"، ولكن هذا يكفي لتوضيح الحاجة.

عند النقر فوق تحرير (غير موضح) للصف، أريد أن أكون قادرا على تحرير جميع الأعمدة الأربعة. أول 3 عبوات نص؛ يجب أن يكون العمود الأخير قائمة في القائمة المنسدلة غير مقيد سجلات من الجدول "الآخر"، زائد خيار "غير محسن" (كعنصر أول في القائمة) حتى يمكن أن تكون السجلات "إلغاء إظهار" أو ترك ببساطة غير عام، زائد (بالنسبة لتلك الصفوف التي تحتوي بالفعل على رابط أنشئ) العنصر المرتبط ("يستخدم" ولكنه يجب أن يكون هناك حتى يتمكنوا من الاستمرار في استخدامه).

يمكنني ملء القائمة المنسدلة بشكل صحيح في كود-خلف في حدث Roaditing GridView (باستثناء العنصر غير المعين الذي أقوم به كقدم قائمة في .aspx مع خيار AppenDDATABOUNDIDEMS تعيين إلى TRUE)، ويمكنني تعيين SELECTVALUE على DDL في موقع DDL الحدث، ولكن عند إعادة النشر عند النقر فوق "تحديث الصف"، لا يحتوي DDL على عناصر فيها بعد الآن (باستثناء العنصر غير المعين) حتى يتم مسح الرابط دائما. إذا قمت بتعيين ارتباط يدويا عن طريق تحرير طاولتي مباشرة، فكل شيء يبدو جيدا في وضع التحرير - يحتوي DDL على العناصر الصحيحة الموجودة فيه وتتطلع مسبقا إلى العنصر الصحيح، ولكن يتم فقد كل شيء على عكست التحديث. لقد حاولت إعادة ربط DDL في مراحل مختلفة من دورة الصفحات ولكن من الواضح أنني لا أفهم تماما أن الدورة جيدا بما يكفي حتى الآن لأنني لا أستطيع معرفة كيفية الحصول على العنصر المحدد من قبل المستخدم لتحديث طاولتي.

لقد جربت أيضا ملء DDL باستخدام Selectcommand SQLDATASource، لكن لم يكن لديك حظ، بما في ذلك معرف السجلات المرتبطة حاليا في قاعدة البيانات الأخرى (على الرغم من أنها متوفرة في جدول "My" ووضعها كدولة GridView وإضافة كهدوء التحكم في SelectParameters ل SQLDATASource. بدون السجل المرتبط حاليا في قائمة عنصر DDL، لا يمكنني الاحتفاظ بالروابط الموجودة.

سأقوم بإرسال عينة رمز الآن - هذه الرسالة طويلة بالفعل! - على أمل أن يكون الحل واضحا من ما وصفته ... لا أعتقد أن هدفي غريب، لكنني منفتح على إقناعته بطريقة أخرى.

شكرا كثيرا مسبقا!

كريس

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

المحلول

حسنا، أنا لا أذهب إلى التفاصيل مع الكود لأنه ربما قمت بالفعل بما أنا على وشك أن أقترح.

بالنسبة للعمود الأخير، القائمة المنسدلة، يجب عليك تنفيذ عبارة SQL للاستيلاء على العناصر غير المناظرة. استخدم "حيث xx ليس في". للحصول على الخيار "غير المخصص"، ما عليك سوى إضافة عنصر إلى القائمة في نفس نطاق التعليمات البرمجية على النحو الوارد أعلاه.

الخطوة التالية هي التعامل مع أحداث تحرير GridView يدويا. إدراج وتحديث وحذف.

أعتقد أن هذه الطريقة لن تواجه مشاكل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top