سؤال

ويقول لاسترداد 100 سجل، وعرضها على الصفحة. المستخدم بتحديث فقط 2 من السجلات على الصفحة. الآن تريد تحديث فقط السجلات اثنين، وليس 98 آخرين.

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

وماذا يعني "بطريقة أو بأخرى" تبدو وكأنها؟

وأو أن لديك زر التحديث يقدم لكل صف، ويكون ذلك بتحديث فقط سجلها مرتبطة؟

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

المحلول

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

1) الذهاب الطريق اياكس والقيام <ط> تعيش -editing. حتى يتم عرض السجلات في جدول ويبدو أن تكون غير قابلة للتحرير. عندما ينقر المستخدم على التوالي معين، هذا الصف يصبح قابل للتحرير باستخدام جافا سكريبت لإنشاء النموذج المناسب في لغة HTML على الطاير. ثم إما زر إرسال أو بعض معالج آخر (مثلا، نقل التركيز إلى صف جدول آخر) والتي سوف تؤدي إلى ما بعد الذي يعد استكمالا للDB (بشكل غير متزامن عبر من طريقة اياكس المفضل). لحسن الحظ الأطر جافا سكريبت السائدة يمكن أن تساعد كثيرا في هذا المجال.

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

نصائح أخرى

واياكس باستخدام مسج أو بعض أخرى مكتبة جافا سكريبت ووضع وزر التحديث على كل صف.

وهناك العديد من الإجابات على هذا السؤال وإلى حد أنها تعتمد على أدوات التطوير الخاصة بك و "يشعر" للموقع.

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

وهذا هو أيضا مجرد السيناريو الذي قطع صممت مجموعات البيانات إلى حل وADO.net يعالج هذه بشكل جيد للغاية.

وحتى من أي وقت مضى، فإن الجواب هو "الامر يتوقف!"

ويمكنك استخدام جافا سكريبت لاحتفال كل حقل أثناء تغيير عندما يتغير مستخدم حقل الإدخال. إنشاء حقول مخفية الذي يحتوي على معرف الصف الذي تقوم بتحديث، والعلم القذرة. (مثل is_dirty_ $ معرف) في جافا سكريبت، إنشاء معالج عند_التغيير التي تضع حقل مخفي كما القذرة. عند تغيير أي مساهمة.

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

وربما كنت تريد تخزين تاريخ LAST_MODIFIED كحقل مخفي لكل سجل. بهذه الطريقة إذا قام مستخدم آخر بتحديث نفس السجل، يمكنك عرض رسالة خطأ تقول "تم تحديث هذا السجل من قبل مستخدم آخر" أو ما شابه ذلك.

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

وهناك 3 طرق التي تتبادر إلى الذهن الذي يمكن التعامل مع تتبع التغييرات:

وجافا سكريبت: ضع ظيفة عند_التغيير () على الضوابط التي تحديث حقل مخفي. إذا كان ذلك خفية له قيمة، ثم تحديث السجل المرتبطة بها. يتطلب JS على المتصفح، ولا أقول لك الحقول التي لتحديث، فقط الذي يسجل.

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

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

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