سؤال

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

((ModalPopupExtender)this.Parent.Parent.FindControl("modalPopupExtender'sID").Show();

مباشرة قبل استدعاء الأسلوب Show() الخاص بـ modalPopup، فإنه يعمل كما توقعنا في الأصل.يبدو لي أنه عندما يتم تداخل UpdatePanels، يمكنهم إعادة نشر الأصل، فإن modalPopup الأصلي "لا يعرف" من المفترض أن يظهر ويعيد تحميل رؤية اللوحة الخاصة به من البداية على أنها خاطئة.نظرًا لأن modalPopup الفرعي يتم تضمينه داخل اللوحة الأصلية التي تكون رؤيتها خاطئة، فإن استدعاء Show() عليها ليس له أي تأثير أيضًا.لذلك بدلاً من فتح modalPopup آخر، يتم إغلاق النافذة الحالية.هذا ليس خطأ، إنه مجرد سلوك لم نتوقعه، لذلك كان من الصعب تعقبه دون أي استثناء، ولكن أعتقد أن التفسير أعلاه منطقي ...إذا كنت قد فهمت المشكلة بشكل غير صحيح، فيرجى توضيحها وتنويري، لأن هذا لا يبدو أنه يحدث طوال الوقت الذي أعتقد أنه سيحدث!
في هذه المرحلة، بالنسبة لهذا الموقف بالذات، نحن عالقون في إعادة كتابة بعض عناصر التحكم هذه حتى لا ينتهي بنا الأمر إلى لوحات تحديث متداخلة، لذلك لا يحدث هذا، ولكنني أشعر بالفضول:
هل واجه أي شخص هذه المشكلة من قبل، وهل توصلت إلى أي حل ذكي لا يتضمن استدعاء FindControl() لإعادة إظهار() modalPopup المعني؟

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

المحلول

لقد قمت بحل هذه المشكلة!
إذا قمت بتغيير UpdatePanel الخاص بـ UpdatePanel إلى "شرطي"، فلن يقوم UpdatePanel الأصلي بالنشر مرة أخرى عندما يقوم UpdatePanel الفرعي بالنشر مرة أخرى، ومن ثم لا يعد تداخلها مشكلة على الإطلاق!
لست متأكدًا من سبب كون UpdateMode="Always" هو الوضع الافتراضي، ولكن الدرس المستفاد.

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