سؤال

أفضل طريقة للسماح للمستخدم بتحديد ترتيب الجدول؟

نحن نستخدم عناصر تحكم SQL Server 2005 وDevExpress.

لدينا جدول يحتوي على ما يلي:

  1. العملية أ
  2. العملية ب
  3. العملية ج
  4. تقرير أ
  5. تقرير ب
  6. تقرير ج

نريد السماح للمستخدم بتغيير الترتيب إلى أي شيء يريده.

هنا مثال واحد:

  1. العملية ج
  2. العملية أ
  3. العملية ب
  4. تقرير ب
  5. تقرير أ
  6. تقرير ج

لاستيعاب ذلك، أضفنا حقل DisplayOrder (INT) إلى الجدول الذي يتم صيانته بواسطة تطبيقنا.

هل استخدام حقل INT هو الحل الأفضل لأمر محدد من قبل المستخدم؟

هل هناك أي طرق أخرى لتحقيق ذلك؟

السبب، كما أسأل، هو أنه في تطبيقنا الحالي يستغرق الأمر حوالي ثانية واحدة لتحريك صف لأسفل (أو لأعلى).أنا على وشك فتح الكود لمعرفة سبب استغراقه وقتًا طويلاً، وإذا كان لدى معلمي Stack Overflow أي أفكار جيدة، فقد أقوم بتنفيذها في ذلك الوقت.

إذا كنت مهتمًا بالفضول، فإليك كيف أعتقد أن تطبيقنا يسمح بتحرير DisplayOrder:

  1. قم بتحميل الجدول في GridView
  2. حدد صفًا
  3. النقر فوق زر "تحريك لأسفل" (يوجد أيضًا زر "تحريك لأعلى")
  4. سيقوم حدث النقر بتبديل DisplayOrder للصف الحالي بالصف الموجود أسفله.
  5. تتم كتابة التغيير الذي تم إجراؤه على كلا السجلين مرة أخرى إلى قاعدة البيانات
  6. يستغرق هذا حوالي ثانية واحدة لكل نقرة (على سبيل المثال.10 نقرات تساوي 10 ثواني)
هل كانت مفيدة؟

المحلول

هل يمكن أن يستغرق الأمر ثانية واحدة لكل عملية تبادل لأنك تقوم بتحديث قاعدة البيانات مع كل نقرة؟ربما حتى إعادة تحديد البيانات مرة أخرى أيضا؟

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

  1. عندما ينقر المستخدم أخيرًا على حفظ.
  2. إذا تغيرت أي من قيم الكائن.

نصائح أخرى

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

أشياء أخرى يجب مراعاتها - عناصر الانتقال إلى الأعلى والانتقال إلى الأسفل بشكل صريح.

لقد قمت بتطبيق واجهة مستخدم ناجحة جدًا باستخدام هذا النوع من الأساليب للاختيار حسب المستخدم للعناصر القابلة للبحث وعناصر إعداد التقارير في نظام المؤسسة.مزيد من التفاصيل حول واجهة المستخدم هي متاح لك أن ترى (كن لطيفًا، تذكر أن عمره حوالي 15 عامًا - في الأيام الأحادية المسطحة!).أحد التحسينات الرئيسية من الكثير من اختبارات المستخدم - لم تكن النقطة المثالية لحفظ هذا الطلب لكل مستخدم أو لكل شركة ولكن لكل مجموعة.كانت المجموعات عبارة عن أشخاص يعملون معًا ولديهم نفس صفحة البداية (في الأساس نفس الجذر في رسم بياني متصل بشكل كبير).كان لدينا حوالي 7 مجموعات فريدة في المنظمة.

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

إذا كنت تتحدث عن ترتيب عرض يريد المستخدم تعيينه والاحتفاظ به، فيجب أن يكون ذلك في جدول منفصل يحتوي على معرف المستخدم ومعرفات السجلات التي يريد المستخدم رؤيتها وعمود ترتيب العرض.ثم يستخدم الاستعلام الذي ينقل البيانات إلى تلك الصفحة صلة بجدول تفضيلات المستخدم.

إذا كنت تريد ضبط الأمر مؤقتًا فقط للوقت الذي ينظر فيه الشخص إلى الشاشة، فقم بذلك من خلال واجهة المستخدم.

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

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