AJAX ScriptManager في UserControl
-
19-08-2019 - |
سؤال
ولدي على UserControl يحتوي على UpdatePanel الذي يلف بعض عناصر التحكم الأخرى. وسوف تستخدم في UserControl على بعض الصفحات التي لديها بالفعل ScriptManager والصفحات الأخرى التي لم يكن لديك ScriptManager. أود UserControl إلى تحقيق ScriptManager الخاصة به تلقائيا إذا كان أحد لا وجود له.
ولقد حاولت ScriptManager.GetCurrent واذا عاد لاغيا ط خلق بلدي ScriptManager وأدخله في نموذج ولكن لا أستطيع أن يجد لنفسه مكانا في وقت مبكر في دورة الحياة في UserControl لتشغيل هذا الرمز. وأظل الحصول على خطأ "التحكم بالمعرف 'uPnlContentList" يتطلب ScriptManager على الصفحة. وScriptManager يجب أن تظهر قبل أي ضوابط التي تحتاج إليها. " في كل مرة أحاول تحميل الصفحة. وOnInit الأماكن لقد حاولت تشغيل قانون بلدي، CreateChildControls وPageLoad وانهم لم الحصول على استدعاء لأنه يموت قبل الوصول إليهم.
وأين يجب أن أضع هذا الاختيار؟
المحلول
وأنا أكره أن تأتي في هذا في اتجاه آخر، ولكن الذي تستخدمه صفحة رئيسية؟ وإذا كان الأمر كذلك، هل يعتبر وضع ScriptManager واحد على ذلك، ويجري معها؟
نصائح أخرى
ووضع ScriptManager في MasterPage بك أن كل ما تبذلونه من الملفات ASPX المرجعية. ثم في أي مكان آخر في الموقع الذي كنت بحاجة إلى العمل مع ScriptManager استخدام ScriptManagerProxy التي سوف تحصل على ScriptManager من الصفحة الرئيسية وتتيح لك العمل معها في عنصر تحكم المستخدم ورمز وراءها.
سوفوالآن يدعو ScriptManager.GetCurrent (صفحة) تعطيك إشارة إلى مدير النصي.
<asp:ScriptManagerProxy>
<Scripts>
<asp:ScriptReference Path="~/Scripts/myscript.js" />
<Scripts>
</asp:ScriptManagerProxy>
إليك وصلة:
وأعتقد يجب أن تعمل الحدث التهيئة. استخدام الأسلوب الذي وصفه (أي التأكد من أن ScriptManager.GetCurrent يعود لاغية قبل أن يضيف) ولكن عند إضافة ScriptManager، تأكد من إضافة أنها عنصر التحكم الأول داخل النموذج.
وأنا لم تختبر هذا ولكن أعتقد أنه سوف يعمل.
وماذا عملت بالنسبة لي كان من ضمنهم هذا الخط بعد
ولقد جعلت من 2 الأشياء التي يعمل.
في في UserControl جعل هذا الفرعية:
Public Sub SetFocus()
txtBox.Focus()
End Sub
في الموقع caling، نسمي هذا قبل ScriptManagerCall بك
userControl.SetFocus()
إذا كان لديك AutoPostback عليك UserControl لديك أيضا لتعيين التركيز في الحدث TextChanged.
Protected Sub txtBox_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtBox.TextChanged
txtBox.Focus()
......
End Sub
ونأمل أن يكون هذا يعمل.