क्योंकि उपयोगकर्ता नियंत्रण पृष्ठ से संबंधित नहीं है, इसलिए आप सीधे तब तक इसका उपयोग नहीं कर सकते जब तक कि आप या तो पृष्ठ सहित उपयोगकर्ता नियंत्रण में कोई संपत्ति सेट नहीं करते हैं या एक रिकर्सिव फ़ंक्शन बनाते हैं जो सभी मूल ऑब्जेक्ट्स के माध्यम से चक्र चलाता है जब तक कि यह System.Web.UI.Page
प्रकार का ऑब्जेक्ट न पाएं।
पहले के लिए, आप एक संपत्ति इस्तेमाल कर सकते हैं (मैं ऐसा करने के बाद एक संपत्ति बुलाया ParentForm
का प्रयोग करके) उपयोगकर्ता नियंत्रण में:
Private _parentForm as System.Web.UI.Page
Public Property ParentForm() As System.Web.UI.Page ' or the type of your page baseclass
Get
Return _parentForm
End Get
Set
_parentForm = value
End Set
End Property
"पिता" पृष्ठ में, आप में इस संपत्ति स्थापित करेगा जितनी जल्दी हो सके एक घटना। मैं प्रीलोड का उपयोग करना पसंद करता हूं क्योंकि यह लोड से पहले आता है (इस प्रकार उपलब्ध है जब अधिकांश अन्य नियंत्रणों की आवश्यकता होगी) और init के बाद।
Protected Sub Page_PreLoad(ByVal sender as Object, ByVal e as EventArgs) Handles Me.PreLoad
Me.myUserControlID.ParentForm = Me
End Sub
आप पृष्ठ को खोजने के लिए अभिभावक नियंत्रणों के माध्यम से फ़ंक्शन ट्रोल भी लिख सकते हैं। निम्नलिखित कोड अनचाहे है इसलिए इसे ट्वीविंग की आवश्यकता हो सकती है, लेकिन विचार ध्वनि है।
Public Shared Function FindParentPage(ByRef ctrl As Object) As Page
If "System.Web.UI.Page".Equals(ctrl.GetType().FullName, StringComparison.OrdinalIgnoreCase) Then
Return ctrl
Else
Return FindParentPage(ctrl.Parent)
End If
End Function
संपादित करें: आप इसलिए भी कि यह प्रकार System.Web.UI.Page
भीतर मौजूद नहीं है सीधे इस संपत्ति का उपयोग नहीं कर सकते हैं। चूंकि @ टिम श्मेलर अनुशंसा करता है, आप या तो पृष्ठ को विशिष्ट पृष्ठ प्रकार _Default
पर डालने का प्रयास कर सकते हैं या यदि यह आपके कई पृष्ठों के लिए कुछ आम है, तो आपको उस बेस क्लास क्लास को बनाने और उस श्रेणी में अपनी संपत्ति शामिल करने की आवश्यकता हो सकती है। तो फिर तुम पेज में फिर System.Web.UI.Page
Public Class MyBasePage
Inherits System.Web.UI.Page
Public Property SelectedID() as Integer
...
End Property
End Class
के बजाय इस वर्ग के वारिस कर सकते हैं:
Partial Class _Default
Inherits MyBasePage
...
End Class
स्रोत
2010-11-04 15:00:24
धन्यवाद टिम, मैं आपकी सलाह ले लिया। मैंने अपने नियंत्रण में एक सार्वजनिक संपत्ति जोड़ा और उस पृष्ठ से सेट किया जब मैंने गतिशील रूप से इसे जोड़ा! – s15199d