سؤال

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

يمكنني إضافة عنصر التحكم مع التحكم في التحميل (المسار إلى .ascx) - لا مشكلة.

يمكنني من خلال خصائصي المخصصة الوصول إلى/تعيين الوصول إلى التسميات المضمنة أيضًا، حتى أتمكن من تهيئة كل عنصر تحكم بشكل مثالي.

ولكن عند إضافة LinkButtons، أواجه مشكلة/مشاكل.

عندما أنقر على الزر، أحصل على "إرسال" للصفحة التي تعرض عناصر التحكم؛ولكن يبدو أن حدث الزر الخاص بعنصر التحكم لا يتم تشغيله (أو على الأقل يبدو أن PageLoad على الصفحة الرئيسية يتم تشغيله أولاً؟) - لا يمكنني معرفة أين يذهب الحدث الخاص بي أو مكان البحث عن اسم/معرف أو معلمة لهذا زر.

كيف يحدث ذلك أو ما الذي أفعله الخطأ هنا؟

لقد قمت الآن بإنشاء "زر مزيف" باستخدام تسمية أكثر تحتوي على "A HREF مضمن" مع معرف في عنوان URL، ولكنني أرغب في معرفة الحدث الذي أحتاج إلى التقاطه وأين أو كيفية بدء الزر، لأنني أريد أن أكون قادرًا على استخدام عناصر تحكم "ASP.NET الافتراضية" لعناصر تحكم المستخدم هذه (آمل بدون الكثير من الترميز المرقعة) ...

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

المحلول

السبب الوحيد وراء "فقدان" الأحداث هو عدم إعادة إنشاء عناصر التحكم لديك بطريقة تمكن ASP.Net من ربط الحدث بعنصر التحكم بعد إعادة النشر.ويتم ذلك من خلال استخدام خاصية المعرف.

بمعنى آخر، أنت تقوم بأحد الأمور الثلاثة الخاطئة:

1) أنت تقوم بتعيين معرفات أزرار الارتباط الخاصة بك بشكل مختلف أثناء مرحلة الإنشاء في Init بعد إعادة النشر

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

3) أنت تعيد ربط مصدر البيانات الخاص بعنصر التحكم الأصلي الذي يحتوي على أزرار الارتباط في كل إعادة نشر.يستخدم if (!IsPostBack) لمنع إعادة ربطه في كل مرة.

بدون رؤية الكود الخاص بك، لا أستطيع تقديم أي شيء أكثر تحديدًا من ذلك للأسف.

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